This is an example of how to read objects that exist in the SAS Metadata Repository. This methods retrieves the physical table, columns, and note created in the previous example.
/**
* This method reads the newly created objects back from the server.
* @param repository identifies the repository from which to read our objects.
*/
public void readTable(CMetadata repository)
{
if(repository != null)
{
try
{
System.out.println("\nReading objects from the server...");
// First we create an MdObjectStore as a container for all of the objects
// we will create/read/persist to the server as one collection.
MdObjectStore store = _factory.createObjectStore();
// The following statements define GetMetadataObjectsSubset options strings.
// These XML strings are used in conjunction with SAS Open Metadata Interface
// flags. The <XMLSELECT> element specifies filter criteria. The
// element specifies the metadata properties to be returned for each object
// from the server.
String xmlSelect = "<XMLSELECT Search=\"@Name='TableTest'\"/>";
String template =
"<Templates>" +
"<PhysicalTable Id=\"\" Name=\"\" Desc=\"\">" +
"<Columns/>" +
"</PhysicalTable>" +
"<Column Id=\"\" Name=\"\" Desc=\"\" ColumnName=\"\">" +
"<Notes/>" +
"</Column>" +
"<TextStore Id=\"\" Name=\"\" Desc=\"\" StoredText=\"\"/>" +
"</Templates>";
// Add the xml select and template strings together
String sOptions = xmlSelect + template;
// The following statements go to the server with a fully-qualified
// repository ID, specify the type of object we are searching for
// (MdObjectFactory.PHYSICALTABLE), utilizing the OMI_XMLSELECT, OMI_TEMPLATE,
// and OMI_GET_METADATA flags. OMI_GET_METADATA tells the server to get all of
// the attributes specified in the template for each object that is returned.
//
// The table, column, and note will be read from the server and created within
// the specified object store.
int flags = MdOMIUtil.OMI_XMLSELECT | MdOMIUtil.OMI_TEMPLATE |
MdOMIUtil.OMI_GET_METADATA;
List tableList = _factory.getOMIUtil().getMetadataObjectsSubset(store,
repository.getFQID(),
MetadataObjects.PHYSICALTABLE,
flags,
sOptions);
Iterator iter = tableList.iterator();
while (iter.hasNext())
{
// The table returned from the server
PhysicalTable table = (PhysicalTable) iter.next();
System.out.println("Found table: " + table.getName() + " (" +
table.getId() + ")");
// Get the list of columns for this table.
AssociationList columns = table.getColumns();
for (int i = 0; i < columns.size(); i++)
{
// The column associated to the table
Column column = (Column) columns.get(i);
System.out.println("Found column: " + column.getName() + " (" +
column.getId() + ")");
System.out.println("\tDescription: " + column.getDesc());
System.out.println("\tColumnName: " + column.getColumnName());
// We now have a column, and request to get its notes.
AssociationList notes = column.getNotes();
for (int j = 0; j < notes.size(); j++)
{
// The note associated to the column
TextStore note = (TextStore) notes.get(j);
System.out.println("Found textstore: " + note.getName() + " (" +
note.getId() + ")");
System.out.println("\tStoredText: " + note.getStoredText());
}
}
}
// When finished, clean up the objects in the store if it is no longer
// being used
store.dispose();
}
catch (MdException e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
}
}