View Javadoc

1   /*
2    * $Id: TabularDbResources.java,v 1.7 2005/03/31 12:10:28 mch Exp $
3    *
4    * (C) Copyright Astrogrid...
5    */
6   
7   package org.astrogrid.tableserver.metadata;
8   
9   import java.io.IOException;
10  import org.astrogrid.dataservice.metadata.MetadataException;
11  import org.astrogrid.dataservice.metadata.VoResourcePlugin;
12  import org.astrogrid.dataservice.metadata.VoTypes;
13  import org.astrogrid.dataservice.metadata.v0_10.VoResourceSupport;
14  import org.astrogrid.io.xml.XmlPrinter;
15  import org.astrogrid.tableserver.metadata.ColumnInfo;
16  import org.astrogrid.tableserver.metadata.TableInfo;
17  import org.astrogrid.tableserver.metadata.TableMetaDocInterpreter;
18  
19  /***
20   * Generates Resource elements for tabular sky services.
21   */
22  
23  public class TabularDbResources extends VoResourceSupport implements VoResourcePlugin  {
24     
25     
26     /*** Generates a voResource element about the database.
27      *  */
28     public String getVoResource() throws IOException {
29  
30        TableMetaDocInterpreter reader = new TableMetaDocInterpreter();
31  
32        StringBuffer tabularDb = new StringBuffer(
33           makeVoResourceElement("tdb:TabularDB",
34                                   "xmlns:vod='http://www.ivoa.net/xml/VODataService/v0.5' "+
35                                   "xmlns:tdb ='urn:astrogrid:schema:vo-resource-types:TabularDB:v0.3' ")+
36           makeCore("TDB")+
37           "<tdb:db>"
38        );
39        
40        //only one catalog in resource at the moment
41        String catalog = reader.getCatalogs()[0];
42        if (catalog == null) {
43           throw new MetadataException("No Catalog found in metadoc");
44        }
45        tabularDb.append(
46           "<tdb:name>"+catalog+"</tdb:name>"+
47           "<tdb:description/>"
48        );
49        
50        TableInfo[] tables = reader.getTables(catalog);
51        for (int t = 0; t < tables.length; t++) {
52           tabularDb.append(
53              "<tdb:table xmlns='http://www.ivoa.net/xml/VODataService/v0.5' >"+ //default namnespace for table descriptions
54                 "<name>"+tables[t].getName()+"</name>"+
55                 "<description>"+XmlPrinter.transformSpecials(tables[t].getDescription())+"</description>"
56           );
57           
58           ColumnInfo[] columns = reader.getColumns(catalog, tables[t].getName());
59           
60           for (int c = 0; c < columns.length; c++) {
61              tabularDb.append(
62                 "<column>"+
63                    "<name>"+columns[c].getName()+"</name>"+
64                    "<description>"+XmlPrinter.transformSpecials(columns[c].getDescription())+"</description>"+
65                    "<datatype>"+VoTypes.getVoType(columns[c].getJavaType())+"</datatype>"
66              );
67           
68              if ((columns[c].getUcd("1") != null) && (columns[c].getUcd("1").trim().length()>0)) {
69                 tabularDb.append(
70                    "<ucd>"+columns[c].getUcd("1")+"</ucd>"
71                 );
72              }
73              if ((columns[c].getUnits() != null) && (columns[c].getUnits().toString().trim().length()>0)) {
74                 tabularDb.append(
75                    "<unit>"+columns[c].getUnits()+"</unit>"
76                 );
77              }
78              tabularDb.append(
79                 "</column>"
80              );
81           }
82           
83           tabularDb.append(
84              "</tdb:table>");
85           
86        }
87  
88        tabularDb.append(
89           "</tdb:db>"+
90           "</"+VORESOURCE_ELEMENT+">");
91        
92        return tabularDb.toString();
93     }
94     
95  }
96  
97