use of com.runwaysdk.dataaccess.metadata.MdAttributeCharacterDAO in project geoprism-registry by terraframe.
the class BusinessType method apply.
@Transaction
public static BusinessType apply(JsonObject object) {
String code = object.get(BusinessType.CODE).getAsString();
String organizationCode = object.get(BusinessType.ORGANIZATION).getAsString();
Organization organization = Organization.getByCode(organizationCode);
ServiceFactory.getGeoObjectTypePermissionService().enforceCanCreate(organization.getCode(), false);
if (!MasterList.isValidName(code)) {
throw new InvalidMasterListCodeException("The geo object type code has an invalid character");
}
if (code.length() > 64) {
// Setting the typename on the MdBusiness creates this limitation.
CodeLengthException ex = new CodeLengthException();
ex.setLength(64);
throw ex;
}
// assignSRAPermissions(mdVertex, mdBusiness);
// assignAll_RA_Permissions(mdVertex, mdBusiness, organizationCode);
LocalizedValue localizedValue = LocalizedValue.fromJSON(object.get(DISPLAYLABEL).getAsJsonObject());
BusinessType businessType = (object.has(OID) && !object.get(OID).isJsonNull()) ? BusinessType.get(object.get(OID).getAsString()) : new BusinessType();
businessType.setCode(code);
businessType.setOrganization(organization);
LocalizedValueConverter.populate(businessType.getDisplayLabel(), localizedValue);
boolean isNew = businessType.isNew();
if (isNew) {
MdVertexDAO mdVertex = MdVertexDAO.newInstance();
mdVertex.setValue(MdGeoVertexInfo.PACKAGE, RegistryConstants.BUSINESS_PACKAGE);
mdVertex.setValue(MdGeoVertexInfo.NAME, code);
mdVertex.setValue(MdGeoVertexInfo.ENABLE_CHANGE_OVER_TIME, MdAttributeBooleanInfo.FALSE);
mdVertex.setValue(MdGeoVertexInfo.GENERATE_SOURCE, MdAttributeBooleanInfo.FALSE);
LocalizedValueConverter.populate(mdVertex, MdVertexInfo.DISPLAY_LABEL, localizedValue);
mdVertex.apply();
// TODO CREATE the edge between this class and GeoVertex??
MdVertexDAOIF mdGeoVertexDAO = MdVertexDAO.getMdVertexDAO(GeoVertex.CLASS);
MdAttributeGraphReferenceDAO mdGeoObject = MdAttributeGraphReferenceDAO.newInstance();
mdGeoObject.setValue(MdAttributeGraphReferenceInfo.REFERENCE_MD_VERTEX, mdGeoVertexDAO.getOid());
mdGeoObject.setValue(MdAttributeGraphReferenceInfo.DEFINING_MD_CLASS, mdVertex.getOid());
mdGeoObject.setValue(MdAttributeGraphReferenceInfo.NAME, GEO_OBJECT);
mdGeoObject.setStructValue(MdAttributeGraphReferenceInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, "Geo Object");
mdGeoObject.apply();
// DefaultAttribute.CODE
MdAttributeCharacterDAO vertexCodeMdAttr = MdAttributeCharacterDAO.newInstance();
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.NAME, DefaultAttribute.CODE.getName());
vertexCodeMdAttr.setStructValue(MdAttributeConcreteInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultLocalizedName());
vertexCodeMdAttr.setStructValue(MdAttributeConcreteInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultDescription());
vertexCodeMdAttr.setValue(MdAttributeCharacterInfo.SIZE, MdAttributeCharacterInfo.MAX_CHARACTER_SIZE);
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.DEFINING_MD_CLASS, mdVertex.getOid());
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.REQUIRED, MdAttributeBooleanInfo.TRUE);
vertexCodeMdAttr.addItem(MdAttributeConcreteInfo.INDEX_TYPE, IndexTypes.UNIQUE_INDEX.getOid());
vertexCodeMdAttr.apply();
businessType.setMdVertexId(mdVertex.getOid());
// Assign permissions
Roles role = Roles.findRoleByName(RegistryConstants.REGISTRY_SUPER_ADMIN_ROLE);
RoleDAO roleDAO = (RoleDAO) BusinessFacade.getEntityDAO(role);
roleDAO.grantPermission(Operation.CREATE, mdVertex.getOid());
roleDAO.grantPermission(Operation.DELETE, mdVertex.getOid());
roleDAO.grantPermission(Operation.WRITE, mdVertex.getOid());
roleDAO.grantPermission(Operation.WRITE_ALL, mdVertex.getOid());
}
businessType.apply();
return businessType;
}
use of com.runwaysdk.dataaccess.metadata.MdAttributeCharacterDAO in project geoprism-registry by terraframe.
the class ListTypeVersion method createTable.
private TableMetadata createTable() {
ListType masterlist = this.getListType();
TableMetadata metadata = new TableMetadata();
Locale currentLocale = Session.getCurrentLocale();
String viewName = this.getTableName();
// Create the MdTable
MdBusinessDAO mdTableDAO = MdBusinessDAO.newInstance();
mdTableDAO.setValue(MdTableInfo.NAME, viewName);
mdTableDAO.setValue(MdTableInfo.PACKAGE, RegistryConstants.TABLE_PACKAGE);
mdTableDAO.setStructValue(MdTableInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, masterlist.getDisplayLabel().getValue());
mdTableDAO.setValue(MdTableInfo.TABLE_NAME, viewName);
mdTableDAO.setValue(MdTableInfo.GENERATE_SOURCE, MdAttributeBooleanInfo.FALSE);
mdTableDAO.apply();
MdBusiness mdBusiness = (MdBusiness) BusinessFacade.get(mdTableDAO);
MdAttributeUUIDDAO mdAttributeOriginalId = MdAttributeUUIDDAO.newInstance();
mdAttributeOriginalId.setValue(MdAttributeCharacterInfo.NAME, ORIGINAL_OID);
mdAttributeOriginalId.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeOriginalId.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, "Original oid");
mdAttributeOriginalId.apply();
metadata.setMdBusiness(mdBusiness);
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
ServerGeoObjectType type = masterlist.getGeoObjectType();
this.createMdAttributeFromAttributeType(mdBusiness, type.getGeometryType());
Collection<AttributeType> attributeTypes = type.getAttributeMap().values();
for (AttributeType attributeType : attributeTypes) {
if (this.isValid(attributeType)) {
createMdAttributeFromAttributeType(metadata, attributeType, type, locales);
}
}
if ((type.getGeometryType().equals(GeometryType.MULTIPOINT) || type.getGeometryType().equals(GeometryType.POINT)) && masterlist.getIncludeLatLong()) {
MdAttributeFloatDAO mdAttributeLatitude = MdAttributeFloatDAO.newInstance();
mdAttributeLatitude.setValue(MdAttributeFloatInfo.NAME, "latitude");
mdAttributeLatitude.setStructValue(MdAttributeFloatInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, "Latitude");
mdAttributeLatitude.setStructValue(MdAttributeFloatInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, "Latitude");
mdAttributeLatitude.setValue(MdAttributeFloatInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLatitude.setValue(MdAttributeFloatInfo.REQUIRED, MdAttributeBooleanInfo.FALSE);
mdAttributeLatitude.setValue(MdAttributeFloatInfo.IMMUTABLE, MdAttributeBooleanInfo.FALSE);
mdAttributeLatitude.setValue(MdAttributeFloatInfo.REJECT_ZERO, MdAttributeBooleanInfo.FALSE);
mdAttributeLatitude.setValue(MdAttributeFloatInfo.REJECT_NEGATIVE, MdAttributeBooleanInfo.FALSE);
mdAttributeLatitude.setValue(MdAttributeFloatInfo.REJECT_POSITIVE, MdAttributeBooleanInfo.FALSE);
mdAttributeLatitude.setValue(MdAttributeFloatInfo.LENGTH, "12");
mdAttributeLatitude.setValue(MdAttributeFloatInfo.DECIMAL, "8");
mdAttributeLatitude.apply();
MdAttributeFloatDAO mdAttributeLongitude = MdAttributeFloatDAO.newInstance();
mdAttributeLongitude.setValue(MdAttributeFloatInfo.NAME, "longitude");
mdAttributeLongitude.setStructValue(MdAttributeFloatInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, "Longitude");
mdAttributeLongitude.setStructValue(MdAttributeFloatInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, "Longitude");
mdAttributeLongitude.setValue(MdAttributeFloatInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLongitude.setValue(MdAttributeFloatInfo.REQUIRED, MdAttributeBooleanInfo.FALSE);
mdAttributeLongitude.setValue(MdAttributeFloatInfo.IMMUTABLE, MdAttributeBooleanInfo.FALSE);
mdAttributeLongitude.setValue(MdAttributeFloatInfo.REJECT_ZERO, MdAttributeBooleanInfo.FALSE);
mdAttributeLongitude.setValue(MdAttributeFloatInfo.REJECT_NEGATIVE, MdAttributeBooleanInfo.FALSE);
mdAttributeLongitude.setValue(MdAttributeFloatInfo.REJECT_POSITIVE, MdAttributeBooleanInfo.FALSE);
mdAttributeLongitude.setValue(MdAttributeFloatInfo.LENGTH, "12");
mdAttributeLongitude.setValue(MdAttributeFloatInfo.DECIMAL, "8");
mdAttributeLongitude.apply();
}
JsonArray hierarchies = masterlist.getHierarchiesAsJson();
for (int i = 0; i < hierarchies.size(); i++) {
JsonObject hierarchy = hierarchies.get(i).getAsJsonObject();
List<String> pCodes = masterlist.getParentCodes(hierarchy);
if (pCodes.size() > 0) {
String hCode = hierarchy.get("code").getAsString();
ServerHierarchyType hierarchyType = ServiceFactory.getMetadataCache().getHierachyType(hCode).get();
String hierarchyLabel = hierarchyType.getDisplayLabel().getValue(currentLocale);
for (String pCode : pCodes) {
ServerGeoObjectType got = ServerGeoObjectType.get(pCode);
String typeLabel = got.getLabel().getValue(currentLocale);
String attributeName = hCode.toLowerCase() + pCode.toLowerCase();
String label = typeLabel + " (" + hierarchyLabel + ")";
String codeDescription = LocalizationFacade.localize("masterlist.code.description");
codeDescription = codeDescription.replaceAll("\\{typeLabel\\}", typeLabel);
codeDescription = codeDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
String labelDescription = LocalizationFacade.localize("masterlist.label.description");
labelDescription = labelDescription.replaceAll("\\{typeLabel\\}", typeLabel);
labelDescription = labelDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
MdAttributeCharacterDAO mdAttributeCode = MdAttributeCharacterDAO.newInstance();
mdAttributeCode.setValue(MdAttributeCharacterInfo.NAME, attributeName);
mdAttributeCode.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeCode.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label);
mdAttributeCode.addItem(MdAttributeCharacterInfo.INDEX_TYPE, IndexTypes.NON_UNIQUE_INDEX.getOid());
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, codeDescription);
mdAttributeCode.apply();
MdAttributeCharacterDAO mdAttributeDefaultLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label + " (defaultLocale)");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", "default"));
mdAttributeDefaultLocale.apply();
for (Locale locale : locales) {
MdAttributeCharacterDAO mdAttributeLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label + " (" + locale + ")");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", locale.toString()));
mdAttributeLocale.apply();
}
}
}
}
JsonArray subtypeHierarchies = masterlist.getSubtypeHierarchiesAsJson();
for (int i = 0; i < subtypeHierarchies.size(); i++) {
JsonObject hierarchy = subtypeHierarchies.get(i).getAsJsonObject();
if (hierarchy.has("selected") && hierarchy.get("selected").getAsBoolean()) {
String hCode = hierarchy.get("code").getAsString();
HierarchyType hierarchyType = ServiceFactory.getAdapter().getMetadataCache().getHierachyType(hCode).get();
String hierarchyLabel = hierarchyType.getLabel().getValue(currentLocale);
String attributeName = hCode.toLowerCase();
String codeDescription = LocalizationFacade.localize("masterlist.code.description");
codeDescription = codeDescription.replaceAll("\\{typeLabel\\}", "");
codeDescription = codeDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
String labelDescription = LocalizationFacade.localize("masterlist.label.description");
labelDescription = labelDescription.replaceAll("\\{typeLabel\\}", "");
labelDescription = labelDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
MdAttributeCharacterDAO mdAttributeCode = MdAttributeCharacterDAO.newInstance();
mdAttributeCode.setValue(MdAttributeCharacterInfo.NAME, attributeName);
mdAttributeCode.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeCode.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel);
mdAttributeCode.addItem(MdAttributeCharacterInfo.INDEX_TYPE, IndexTypes.NON_UNIQUE_INDEX.getOid());
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, codeDescription);
mdAttributeCode.apply();
MdAttributeCharacterDAO mdAttributeDefaultLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel + " (defaultLocale)");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", "default"));
mdAttributeDefaultLocale.apply();
for (Locale locale : locales) {
MdAttributeCharacterDAO mdAttributeLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel + " (" + locale + ")");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", locale.toString()));
mdAttributeLocale.apply();
}
}
}
return metadata;
}
use of com.runwaysdk.dataaccess.metadata.MdAttributeCharacterDAO in project geoprism-registry by terraframe.
the class MasterListVersion method createTable.
private TableMetadata createTable() {
MasterList masterlist = this.getMasterlist();
TableMetadata metadata = new TableMetadata();
Locale currentLocale = Session.getCurrentLocale();
String viewName = this.getTableName();
// Create the MdTable
MdBusinessDAO mdTableDAO = MdBusinessDAO.newInstance();
mdTableDAO.setValue(MdTableInfo.NAME, viewName);
mdTableDAO.setValue(MdTableInfo.PACKAGE, RegistryConstants.TABLE_PACKAGE);
mdTableDAO.setStructValue(MdTableInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, masterlist.getDisplayLabel().getValue());
mdTableDAO.setValue(MdTableInfo.TABLE_NAME, viewName);
mdTableDAO.setValue(MdTableInfo.GENERATE_SOURCE, MdAttributeBooleanInfo.FALSE);
mdTableDAO.apply();
MdBusiness mdBusiness = (MdBusiness) BusinessFacade.get(mdTableDAO);
MdAttributeUUIDDAO mdAttributeOriginalId = MdAttributeUUIDDAO.newInstance();
mdAttributeOriginalId.setValue(MdAttributeCharacterInfo.NAME, ORIGINAL_OID);
mdAttributeOriginalId.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeOriginalId.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, "Original oid");
mdAttributeOriginalId.apply();
metadata.setMdBusiness(mdBusiness);
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
ServerGeoObjectType type = masterlist.getGeoObjectType();
this.createMdAttributeFromAttributeType(mdBusiness, type.getGeometryType());
Collection<AttributeType> attributeTypes = type.getAttributeMap().values();
for (AttributeType attributeType : attributeTypes) {
if (this.isValid(attributeType)) {
createMdAttributeFromAttributeType(metadata, attributeType, type, locales);
}
}
JsonArray hierarchies = masterlist.getHierarchiesAsJson();
for (int i = 0; i < hierarchies.size(); i++) {
JsonObject hierarchy = hierarchies.get(i).getAsJsonObject();
List<String> pCodes = masterlist.getParentCodes(hierarchy);
if (pCodes.size() > 0) {
String hCode = hierarchy.get("code").getAsString();
ServerHierarchyType hierarchyType = ServiceFactory.getMetadataCache().getHierachyType(hCode).get();
String hierarchyLabel = hierarchyType.getDisplayLabel().getValue(currentLocale);
for (String pCode : pCodes) {
ServerGeoObjectType got = ServerGeoObjectType.get(pCode);
String typeLabel = got.getLabel().getValue(currentLocale);
String attributeName = hCode.toLowerCase() + pCode.toLowerCase();
String label = typeLabel + " (" + hierarchyLabel + ")";
String codeDescription = LocalizationFacade.localize("masterlist.code.description");
codeDescription = codeDescription.replaceAll("\\{typeLabel\\}", typeLabel);
codeDescription = codeDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
String labelDescription = LocalizationFacade.localize("masterlist.label.description");
labelDescription = labelDescription.replaceAll("\\{typeLabel\\}", typeLabel);
labelDescription = labelDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
MdAttributeCharacterDAO mdAttributeCode = MdAttributeCharacterDAO.newInstance();
mdAttributeCode.setValue(MdAttributeCharacterInfo.NAME, attributeName);
mdAttributeCode.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeCode.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label);
mdAttributeCode.addItem(MdAttributeCharacterInfo.INDEX_TYPE, IndexTypes.NON_UNIQUE_INDEX.getOid());
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, codeDescription);
mdAttributeCode.apply();
MdAttributeCharacterDAO mdAttributeDefaultLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label + " (defaultLocale)");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", "default"));
mdAttributeDefaultLocale.apply();
for (Locale locale : locales) {
MdAttributeCharacterDAO mdAttributeLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, label + " (" + locale + ")");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", locale.toString()));
mdAttributeLocale.apply();
}
}
}
}
JsonArray subtypeHierarchies = masterlist.getSubtypeHierarchiesAsJson();
for (int i = 0; i < subtypeHierarchies.size(); i++) {
JsonObject hierarchy = subtypeHierarchies.get(i).getAsJsonObject();
if (hierarchy.has("selected") && hierarchy.get("selected").getAsBoolean()) {
String hCode = hierarchy.get("code").getAsString();
HierarchyType hierarchyType = ServiceFactory.getAdapter().getMetadataCache().getHierachyType(hCode).get();
String hierarchyLabel = hierarchyType.getLabel().getValue(currentLocale);
String attributeName = hCode.toLowerCase();
String codeDescription = LocalizationFacade.localize("masterlist.code.description");
codeDescription = codeDescription.replaceAll("\\{typeLabel\\}", "");
codeDescription = codeDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
String labelDescription = LocalizationFacade.localize("masterlist.label.description");
labelDescription = labelDescription.replaceAll("\\{typeLabel\\}", "");
labelDescription = labelDescription.replaceAll("\\{hierarchyLabel\\}", hierarchyLabel);
MdAttributeCharacterDAO mdAttributeCode = MdAttributeCharacterDAO.newInstance();
mdAttributeCode.setValue(MdAttributeCharacterInfo.NAME, attributeName);
mdAttributeCode.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeCode.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel);
mdAttributeCode.addItem(MdAttributeCharacterInfo.INDEX_TYPE, IndexTypes.NON_UNIQUE_INDEX.getOid());
mdAttributeCode.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, codeDescription);
mdAttributeCode.apply();
MdAttributeCharacterDAO mdAttributeDefaultLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel + " (defaultLocale)");
mdAttributeDefaultLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", "default"));
mdAttributeDefaultLocale.apply();
for (Locale locale : locales) {
MdAttributeCharacterDAO mdAttributeLocale = MdAttributeCharacterDAO.newInstance();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeName + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.DEFINING_MD_CLASS, mdTableDAO.getOid());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, hierarchyLabel + " (" + locale + ")");
mdAttributeLocale.setStructValue(MdAttributeCharacterInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, labelDescription.replaceAll("\\{locale\\}", locale.toString()));
mdAttributeLocale.apply();
}
}
}
return metadata;
}
use of com.runwaysdk.dataaccess.metadata.MdAttributeCharacterDAO in project geoprism-registry by terraframe.
the class PatchCodeMetadata method create.
// @Transaction
public void create(ServerGeoObjectType type) {
List<ServerGeoObjectType> subtypes = type.getSubtypes();
for (ServerGeoObjectType subtype : subtypes) {
// Add the code attribute to the subtypes
MdClassDAOIF[] mdClasses = new MdClassDAOIF[] { subtype.getMdVertex(), subtype.getMdBusinessDAO() };
for (MdClassDAOIF mdClass : mdClasses) {
MdAttributeCharacterDAO codeMdAttr = MdAttributeCharacterDAO.newInstance();
codeMdAttr.setValue(MdAttributeConcreteInfo.NAME, DefaultAttribute.CODE.getName());
codeMdAttr.setStructValue(MdAttributeConcreteInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultLocalizedName());
codeMdAttr.setStructValue(MdAttributeConcreteInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultDescription());
codeMdAttr.setValue(MdAttributeCharacterInfo.SIZE, MdAttributeCharacterInfo.MAX_CHARACTER_SIZE);
codeMdAttr.setValue(MdAttributeConcreteInfo.DEFINING_MD_CLASS, mdClass.getOid());
codeMdAttr.setValue(MdAttributeConcreteInfo.REQUIRED, MdAttributeBooleanInfo.TRUE);
codeMdAttr.addItem(MdAttributeConcreteInfo.INDEX_TYPE, IndexTypes.UNIQUE_INDEX.getOid());
codeMdAttr.apply();
}
}
}
use of com.runwaysdk.dataaccess.metadata.MdAttributeCharacterDAO in project geoprism-registry by terraframe.
the class ServerGeoObjectTypeConverter method create.
@Transaction
public ServerGeoObjectType create(GeoObjectType geoObjectType) {
if (!MasterList.isValidName(geoObjectType.getCode())) {
throw new InvalidMasterListCodeException("The geo object type code has an invalid character");
}
if (geoObjectType.getCode().length() > 64) {
// Setting the typename on the MdBusiness creates this limitation.
CodeLengthException ex = new CodeLengthException();
ex.setLength(64);
throw ex;
}
ServiceFactory.getGeoObjectTypePermissionService().enforceCanCreate(geoObjectType.getOrganizationCode(), geoObjectType.getIsPrivate());
String superTypeCode = geoObjectType.getSuperTypeCode();
Boolean isAbstract = geoObjectType.getIsAbstract();
ServerGeoObjectType superType = null;
if (superTypeCode != null && superTypeCode.length() > 0) {
superType = ServerGeoObjectType.get(superTypeCode);
geoObjectType.setGeometryType(superType.getGeometryType());
}
if (isAbstract && superType != null) {
throw new ChainInheritanceException();
}
if (superType != null && !superType.getIsAbstract()) {
throw new GeoObjectTypeAssignmentException();
}
Universal universal = new Universal();
universal.setUniversalId(geoObjectType.getCode());
universal.setIsLeafType(false);
universal.setIsGeometryEditable(geoObjectType.isGeometryEditable());
// Set the owner of the universal to the id of the corresponding role of the
// responsible organization.
String organizationCode = geoObjectType.getOrganizationCode();
setOwner(universal, organizationCode);
populate(universal.getDisplayLabel(), geoObjectType.getLabel());
populate(universal.getDescription(), geoObjectType.getDescription());
com.runwaysdk.system.gis.geo.GeometryType geometryType = GeometryTypeFactory.get(geoObjectType.getGeometryType());
// Clear the default value
universal.clearGeometryType();
universal.addGeometryType(geometryType);
MdBusiness mdBusiness = new MdBusiness();
mdBusiness.setPackageName(RegistryConstants.UNIVERSAL_MDBUSINESS_PACKAGE);
// The CODE name becomes the class name
mdBusiness.setTypeName(universal.getUniversalId());
mdBusiness.setGenerateSource(false);
mdBusiness.setIsAbstract(isAbstract);
mdBusiness.setStructValue(MdAttributeConcreteInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, universal.getDisplayLabel().getValue());
mdBusiness.setStructValue(MdAttributeConcreteInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, universal.getDescription().getValue());
if (superType != null) {
mdBusiness.setSuperMdBusiness(superType.getMdBusiness());
} else {
mdBusiness.setPublish(false);
}
try {
// The DuplicateDataException on code was found to be thrown here.
// I've created a larger try/catch here just in case.
mdBusiness.apply();
// Add the default attributes.
if (superType == null) {
this.createDefaultAttributes(universal, mdBusiness);
}
universal.setMdBusiness(mdBusiness);
universal.apply();
GeoObjectTypeMetadata metadata = new GeoObjectTypeMetadata();
metadata.setIsPrivate(geoObjectType.getIsPrivate());
metadata.setUniversal(universal);
metadata.apply();
} catch (DuplicateDataException ex) {
DuplicateGeoObjectTypeException ex2 = new DuplicateGeoObjectTypeException();
ex2.setDuplicateValue(geoObjectType.getCode());
throw ex2;
}
// Create the MdGeoVertexClass
MdGeoVertexDAO mdVertex = GeoVertexType.create(universal.getUniversalId(), universal.getOwnerOid(), isAbstract, superType);
if (superType == null) {
this.createDefaultAttributes(universal, mdVertex);
assignSRAPermissions(mdVertex, mdBusiness);
assignAll_RA_Permissions(mdVertex, mdBusiness, organizationCode);
create_RM_GeoObjectTypeRole(mdVertex, organizationCode, geoObjectType.getCode());
assign_RM_GeoObjectTypeRole(mdVertex, mdBusiness, organizationCode, geoObjectType.getCode());
create_RC_GeoObjectTypeRole(mdVertex, organizationCode, geoObjectType.getCode());
assign_RC_GeoObjectTypeRole(mdVertex, mdBusiness, organizationCode, geoObjectType.getCode());
create_AC_GeoObjectTypeRole(mdVertex, organizationCode, geoObjectType.getCode());
assign_AC_GeoObjectTypeRole(mdVertex, mdBusiness, organizationCode, geoObjectType.getCode());
}
if (!isAbstract) {
// DefaultAttribute.CODE
MdAttributeCharacter businessCodeMdAttr = new MdAttributeCharacter();
businessCodeMdAttr.setAttributeName(DefaultAttribute.CODE.getName());
businessCodeMdAttr.getDisplayLabel().setValue(DefaultAttribute.CODE.getDefaultLocalizedName());
businessCodeMdAttr.getDescription().setValue(DefaultAttribute.CODE.getDefaultDescription());
businessCodeMdAttr.setDatabaseSize(MdAttributeCharacterInfo.MAX_CHARACTER_SIZE);
businessCodeMdAttr.setDefiningMdClass(mdBusiness);
businessCodeMdAttr.setRequired(true);
businessCodeMdAttr.addIndexType(MdAttributeIndices.UNIQUE_INDEX);
businessCodeMdAttr.apply();
// DefaultAttribute.CODE
MdAttributeCharacterDAO vertexCodeMdAttr = MdAttributeCharacterDAO.newInstance();
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.NAME, DefaultAttribute.CODE.getName());
vertexCodeMdAttr.setStructValue(MdAttributeConcreteInfo.DISPLAY_LABEL, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultLocalizedName());
vertexCodeMdAttr.setStructValue(MdAttributeConcreteInfo.DESCRIPTION, MdAttributeLocalInfo.DEFAULT_LOCALE, DefaultAttribute.CODE.getDefaultDescription());
vertexCodeMdAttr.setValue(MdAttributeCharacterInfo.SIZE, MdAttributeCharacterInfo.MAX_CHARACTER_SIZE);
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.DEFINING_MD_CLASS, mdVertex.getOid());
vertexCodeMdAttr.setValue(MdAttributeConcreteInfo.REQUIRED, MdAttributeBooleanInfo.TRUE);
vertexCodeMdAttr.addItem(MdAttributeConcreteInfo.INDEX_TYPE, IndexTypes.UNIQUE_INDEX.getOid());
vertexCodeMdAttr.apply();
}
// Build the parent class term root if it does not exist.
TermConverter.buildIfNotExistdMdBusinessClassifier(mdBusiness);
ServerGeoObjectType serverGeoObjectType = this.build(universal);
return serverGeoObjectType;
}
Aggregations