use of net.geoprism.registry.model.ServerGeoObjectType in project geoprism-registry by terraframe.
the class ListTypeEntry method toJSON.
public JsonObject toJSON() {
ListType listType = this.getListType();
ServerGeoObjectType type = ServerGeoObjectType.get(listType.getUniversal());
Organization organization = type.getOrganization();
JsonObject object = new JsonObject();
if (this.isAppliedToDB()) {
object.addProperty(ListTypeVersion.OID, this.getOid());
}
object.addProperty(ListType.DISPLAYLABEL, listType.getDisplayLabel().getValue());
object.addProperty(ListTypeVersion.TYPE_CODE, type.getCode());
object.addProperty(ListTypeVersion.ORG_CODE, organization.getCode());
object.addProperty(ListTypeVersion.LISTTYPE, listType.getOid());
object.addProperty(ListTypeVersion.FORDATE, GeoRegistryUtil.formatDate(this.getForDate(), false));
object.addProperty(ListTypeVersion.CREATEDATE, GeoRegistryUtil.formatDate(this.getCreateDate(), false));
object.add(ListTypeVersion.PERIOD, listType.formatVersionLabel(this));
List<ListTypeVersion> versions = this.getVersions();
JsonArray jVersions = new JsonArray();
for (ListTypeVersion version : versions) {
if (version.getListVisibility().equals(ListType.PUBLIC) || version.getGeospatialVisibility().equals(ListType.PUBLIC) || Organization.isMember(organization)) {
jVersions.add(version.toJSON(false));
}
}
object.add(ListTypeEntry.VERSIONS, jVersions);
return object;
}
use of net.geoprism.registry.model.ServerGeoObjectType in project geoprism-registry by terraframe.
the class ListTypeVersion method publishRecord.
@Transaction
public void publishRecord(ServerGeoObjectIF object) {
// Only working lists can be updated from changes to the graph objects
if (this.getWorking()) {
object.setDate(this.getForDate());
// Delete tile cache
ListTileCache.deleteTiles(this);
ListType masterlist = this.getListType();
MdBusinessDAO mdBusiness = MdBusinessDAO.get(this.getMdBusinessOid()).getBusinessDAO();
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
// Add the type ancestor fields
ServerGeoObjectType type = ServerGeoObjectType.get(masterlist.getUniversal());
Map<ServerHierarchyType, List<ServerGeoObjectType>> ancestorMap = masterlist.getAncestorMap(type);
Set<ServerHierarchyType> hierarchiesOfSubTypes = type.getHierarchiesOfSubTypes();
Collection<AttributeType> attributes = type.getAttributeMap().values();
Business business = new Business(mdBusiness.definesType());
this.publish(masterlist, type, object, business, attributes, ancestorMap, hierarchiesOfSubTypes, locales);
}
}
use of net.geoprism.registry.model.ServerGeoObjectType in project geoprism-registry by terraframe.
the class ListTypeVersion method updateRecord.
@Transaction
public void updateRecord(ServerGeoObjectIF object) {
// Only working lists can be updated from changes to the graph objects
if (this.getWorking()) {
object.setDate(this.getForDate());
// Delete tile cache
ListTileCache.deleteTiles(this);
ListType masterlist = this.getListType();
MdBusinessDAO mdBusiness = MdBusinessDAO.get(this.getMdBusinessOid()).getBusinessDAO();
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
// Add the type ancestor fields
ServerGeoObjectType type = ServerGeoObjectType.get(masterlist.getUniversal());
Set<ServerHierarchyType> hierarchiesOfSubTypes = type.getHierarchiesOfSubTypes();
Map<ServerHierarchyType, List<ServerGeoObjectType>> ancestorMap = masterlist.getAncestorMap(type);
Collection<AttributeType> attributes = type.getAttributeMap().values();
BusinessQuery query = new QueryFactory().businessQuery(mdBusiness.definesType());
query.WHERE(query.aCharacter(DefaultAttribute.CODE.getName()).EQ(object.getCode()));
List<Business> records = query.getIterator().getAll();
for (Business record : records) {
try {
record.appLock();
this.publish(masterlist, type, object, record, attributes, ancestorMap, hierarchiesOfSubTypes, locales);
} finally {
record.unlock();
}
}
}
}
use of net.geoprism.registry.model.ServerGeoObjectType in project geoprism-registry by terraframe.
the class ListTypeVersion method create.
@Transaction
public static ListTypeVersion create(ListTypeEntry listEntry, boolean working, int versionNumber, JsonObject metadata) {
ListType listType = listEntry.getListType();
ListTypeVersion version = new ListTypeVersion();
version.setEntry(listEntry);
version.setListType(listType);
version.setForDate(listEntry.getForDate());
version.setVersionNumber(versionNumber);
version.setWorking(working);
if (metadata != null) {
version.parse(metadata);
}
ServerGeoObjectType type = listType.getGeoObjectType();
if (type.getIsPrivate() && (version.getListVisibility().equals(ListType.PUBLIC) || version.getGeospatialVisibility().equals(ListType.PUBLIC))) {
throw new UnsupportedOperationException("A list version cannot be public if the Geo-Object Type is private");
}
TableMetadata tableMetadata = null;
tableMetadata = version.createTable();
version.setMdBusiness(tableMetadata.getMdBusiness());
version.apply();
if (tableMetadata != null) {
Map<MdAttribute, MdAttribute> pairs = tableMetadata.getPairs();
Set<Entry<MdAttribute, MdAttribute>> entries = pairs.entrySet();
for (Entry<MdAttribute, MdAttribute> entry : entries) {
ListTypeAttributeGroup.create(version, entry.getValue(), entry.getKey());
}
}
ListTypeVersion.assignDefaultRolePermissions(version.getMdBusiness());
return version;
}
use of net.geoprism.registry.model.ServerGeoObjectType 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;
}
Aggregations