1
2
3
4
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
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