MetadataManager metadataManager = Connector.getMetadataManager();
PartyManager partyManager = Connector.getPartyManager();
// Now let's create an engineering department within Mega Corp.
// String engineeringUuid = partyManager.createOrganization(m_rootAuth,
// "Engineering",
// "We design the stuff",
// m_kpRoot, // Mega Corp is our 'parent' organization
// "Department",
// "eng@megacorp.com"); // email address for Engineering
// Now create a metadata template hierarchy.
// First get the root template UUID. The root template provides an optional root for the template hierarchy
// for a specific organization. Other templates don't have to inherit from the root template, but it's
// a good convention. Templates that don't inherit from the root template won't show up in the Administrator
// application.
String rootTemplateUuid = metadataManager.getRootMetadataTemplateUuid(m_userAuth, m_kpRoot);
System.out.println("root Template uuid: " + rootTemplateUuid);
// Create a label in the root template called 'Author' of type STRINGLIST - it may take multiple free-form strings
// as values. By adding the label in the root template, all other templates will inherit the label.
String authorLabelUuid = metadataManager.createMetadataLabelInTemplate(m_userAuth,
rootTemplateUuid,
"Author", // the 'Key'
true, // required
DataType.STRINGLIST,
null, // default value
null); // max length
System.out.println("author uuid: " + authorLabelUuid);
// Create a new template
String designDrawingsTemplateUuid = metadataManager.createTemplate(m_userAuth, "Design Drawings", m_kpRoot);
System.out.println("Desgin Drawing UUID: " + designDrawingsTemplateUuid);
// Make the new template a child of the root template. It now inherits the "Author" label from the root template.
metadataManager.addChildTemplate(m_userAuth, rootTemplateUuid, designDrawingsTemplateUuid);
// Add labels to the new template
String statusLabelUuid = metadataManager.createMetadataLabelInTemplate(m_userAuth,
designDrawingsTemplateUuid,
"Design Status", // the 'Key'
true, // required
DataType.PICKONE,
null, // default value
null); // max length
String inProgressSelectionUuid = metadataManager.createMetadataSelection(m_userAuth,
statusLabelUuid, DataType.STRING,
"In Progress", null );
String inRevisionSelectionUuid = metadataManager.createMetadataSelection(m_userAuth,
statusLabelUuid, DataType.STRING,
"In Revision", null );
String acceptedSelectionUuid = metadataManager.createMetadataSelection(m_userAuth,
statusLabelUuid, DataType.STRING,
"Accepted", null );
String rejectedSelectionUuid = metadataManager.createMetadataSelection(m_userAuth,
statusLabelUuid, DataType.STRING,
"Rejected", null );
// Create another template for the number of hours that have been spent on this drawing
String hoursWorkedLabelUuid = metadataManager.createMetadataLabelInTemplate(m_userAuth,
designDrawingsTemplateUuid,
"Hours Worked",
false,
DataType.NUMBER,
null, // default value
null); // max length );
// Create a new template that belongs to Joe himself. Creating a template that's owned by a
// user (as opposed to an organization or group) is not possible in the Admininstrator
// application, but it is allowed by the server.
String joesDrawingsTemplateUuid = metadataManager.createTemplate(m_userAuth,
"Joe's Design Work",
m_kpRoot);
System.out.println("Joe drwaing Template UUID: " + joesDrawingsTemplateUuid);
// Make Joe's new template a child of the "Design Drawings" template. Inter-organization
// relationships between metadata templates is another thing that isn't possible to create in
// the Administrator application at present, but it is allowed in the server and can be very useful.
metadataManager.addChildTemplate(m_userAuth, designDrawingsTemplateUuid, joesDrawingsTemplateUuid);
// Add a label to the template
String joesNotesLabelUuid = metadataManager.createMetadataLabelInTemplate(m_userAuth, joesDrawingsTemplateUuid,
"Joe's Notes",
true, DataType.NOTES,
null, // default value
null); // max length
Collection templates = metadataManager.getChildTemplates(m_userAuth, rootTemplateUuid);
Iterator iter = templates.iterator();
while(iter.hasNext()) {
MetadataTemplateInfo template = (MetadataTemplateInfo)iter.next();
System.out.println("--> Template UUID: " + template.getUuid());
}
}