/** * This method will check that replacing the current DE with a mapping to existing DE will not * conflict with any other DE. * * @param oldDe currentMapping * @param newDe new Mapping * @return null if there is no conflict. The conflicting DE if there is a conflict. */ public static DataElement checkConflict(DataElement oldDe, DataElement newDe) { ObjectClass oc = oldDe.getDataElementConcept().getObjectClass(); if (oc.getPublicId() != null) { // Verify conflicts if (!newDe.getDataElementConcept().getObjectClass().getPublicId().equals(oc.getPublicId()) || !newDe.getDataElementConcept().getObjectClass().getVersion().equals(oc.getVersion())) { // Oc was already mapped by an existing DE. This DE conflicts with the previous mapping. // Now we need to find out what DE set the oc_id previously // return newDe; List<DataElement> des = ElementsLists.getInstance().getElements(DomainObjectFactory.newDataElement()); for (DataElement de : des) { if (de.getDataElementConcept().getObjectClass() != oldDe.getDataElementConcept().getObjectClass()) continue; if (StringUtil.isEmpty(de.getPublicId()) || de.getVersion() == null) continue; String ocId = de.getDataElementConcept().getObjectClass().getPublicId(); if (oldDe != de && ocId != null && !ocId.equals(newDe.getDataElementConcept().getObjectClass().getPublicId())) { return de; } } // we shouldn't be here return null; } } return null; }
private void clear() { disableCDELinks(); tempDE = DomainObjectFactory.newDataElement(); ValueDomain vd = DomainObjectFactory.newValueDomain(); List<AttributeDatatypePair> attTypesPairs = ElementsLists.getInstance().getElements(new AttributeDatatypePair("", "")); String datatype = null; String attributeName = LookupUtil.lookupFullName(de); for (AttributeDatatypePair pair : attTypesPairs) { if (pair.getAttributeName().equals(attributeName)) { datatype = pair.getDatatype(); } } if (datatype == null) datatype = ""; else { if (DatatypeMapping.getKeys().contains(datatype.toLowerCase())) datatype = DatatypeMapping.getMapping().get(datatype.toLowerCase()); } vd.setLongName(datatype); tempDE.setValueDomain(vd); deLongNameValueLabel.setText(""); deIdValueLabel.setText(""); deContextNameValueLabel.setText(""); vdLongNameValueLabel.setText(""); conceptCodeSummaryValue.setText(""); conceptNameSummaryValue.setText(""); }
public static AdminComponent checkDuplicate(DataElement currentDe, DataElement newDataElement) { ElementsLists elements = ElementsLists.getInstance(); // 1. Verify that this DE will not implicitely map the OC to one // that is already used in the model. List<ObjectClass> ocs = elements.getElements(DomainObjectFactory.newObjectClass()); if (ocs != null) { for (ObjectClass oc : ocs) { if (oc.getPublicId() != null) { if (currentDe.getDataElementConcept().getObjectClass() != oc) if (oc.getPublicId() .equals(newDataElement.getDataElementConcept().getObjectClass().getPublicId())) return oc; } } } // 2. Check that we don't already have this exact DE public ID List<DataElement> des = elements.getElements(DomainObjectFactory.newDataElement()); for (DataElement de : des) { if (de != currentDe) { if (!StringUtil.isEmpty(de.getPublicId()) && de.getPublicId().equals(newDataElement.getPublicId())) return de; } } // if(des != null && ocs != null) { // for(ObjectClass oc : ocs) //// Map<String, DataElement> deList = new HashMap<String, DataElement>(); // for(DataElement de : des) // if(newDataElement.getDataElementConcept().getObjectClass() == // de.getDataElementConcept().getObjectClass()) // if(newDataElement.getPublicId() == de.getPublicId()) // return false; // } return null; }
public void initPackages() { packages = ElementsLists.getInstance().getElements(new FilterPackage("")); // packageComboBox.removeAll(); int pkgCount = packageComboBox.getItemCount(); int i = 0; while (i <= pkgCount && pkgCount != 0) { packageComboBox.removeItemAt(i); pkgCount = packageComboBox.getItemCount(); } for (FilterPackage pkg : packages) packageComboBox.addItem(pkg.getName()); if (packageComboBox.getItemCount() > 0) for (int j = 0; j < packageComboBox.getItemCount(); j++) if (packageComboBox .getItemAt(j) .toString() .trim() .equalsIgnoreCase("Logical View.Logical Model")) { packageComboBox.setSelectedIndex(j); break; } }
/** @author <a href="mailto:[email protected]">Christophe Ludet</a> */ public class DECPersister implements Persister { public static String DEC_PREFERRED_NAME_DELIMITER = "v"; public static String DEC_PREFERRED_NAME_CONCAT_CHAR = ":"; public static String DEC_PREFERRED_DEF_CONCAT_CHAR = "_"; private static Logger logger = Logger.getLogger(DECPersister.class.getName()); private UMLDefaults defaults = UMLDefaults.getInstance(); private ElementsLists elements = ElementsLists.getInstance(); private ProgressListener progressListener = null; private PersisterUtil persisterUtil; private DataElementConceptDAO dataElementConceptDAO; public DECPersister() { initDAOs(); } public void persist() { DataElementConcept dec = DomainObjectFactory.newDataElementConcept(); List<DataElementConcept> decs = elements.getElements(dec); logger.debug("***** Inside DEC Persist "); int count = 0; sendProgressEvent(count++, decs.size(), "DECs"); logger.debug("decs... "); if (decs != null) { for (ListIterator<DataElementConcept> it = decs.listIterator(); it.hasNext(); ) { DataElementConcept newDec = DomainObjectFactory.newDataElementConcept(); dec = it.next(); sendProgressEvent(count++, decs.size(), "DEC : " + dec.getLongName()); List<AlternateName> passedAltNames = new ArrayList<AlternateName>(); for (AlternateName _an : dec.getAlternateNames()) passedAltNames.add(_an); List<Definition> modelDefinitions = new ArrayList<Definition>(); for (Definition _def : dec.getDefinitions()) modelDefinitions.add(_def); List<AdminComponentClassSchemeClassSchemeItem> passedACCSCSI = dec.getAcCsCsis(); dec.removeDefinitions(); dec.removeAlternateNames(); if (!StringUtil.isEmpty(dec.getPublicId()) && dec.getVersion() != null) { newDec = existingMapping(dec); dec.setId(newDec.getId()); for (AlternateName _an : passedAltNames) { persisterUtil.addAlternateName(dec, _an); } it.set(newDec); persisterUtil.addPackageClassification(dec); logger.info(PropertyAccessor.getProperty("mapped.to.existing.dec")); continue; } // update object class with persisted one if (dec.getObjectClass().getPublicId() == null) dec.setObjectClass(LookupUtil.lookupObjectClass(dec.getObjectClass().getPreferredName())); else dec.setObjectClass( LookupUtil.lookupObjectClass( dec.getObjectClass().getPublicId(), dec.getObjectClass().getVersion())); newDec.setObjectClass(dec.getObjectClass()); // update property with persisted one if (dec.getProperty().getPublicId() == null) dec.setProperty(LookupUtil.lookupProperty(dec.getProperty().getPreferredName())); else dec.setProperty( LookupUtil.lookupProperty( dec.getProperty().getPublicId(), dec.getProperty().getVersion())); newDec.setProperty(dec.getProperty()); logger.debug("dec name: " + dec.getLongName()); // logger.debug("alt Name: " + ne); List<String> eager = new ArrayList<String>(); eager.add("definitions"); // does this dec exist? List l = dataElementConceptDAO.find(newDec, eager); logger.debug("***** decs size : " + l.size()); if (l.size() == 0) { logger.debug("***** one or more decs "); if (dec.getConceptualDomain() == null) dec.setConceptualDomain(defaults.getConceptualDomain()); dec.setContext(defaults.getContext()); dec.setLongName( dec.getObjectClass().getLongName() + " " + dec.getProperty().getLongName()); dec.setPreferredDefinition( dec.getObjectClass().getPreferredDefinition() + DEC_PREFERRED_DEF_CONCAT_CHAR + dec.getProperty().getPreferredDefinition()); dec.setPreferredName( ConventionUtil.publicIdVersion(dec.getObjectClass()) + DEC_PREFERRED_NAME_CONCAT_CHAR + ConventionUtil.publicIdVersion(dec.getProperty())); dec.setVersion(new Float(1.0f)); dec.setWorkflowStatus(defaults.getWorkflowStatus()); dec.setProperty(LookupUtil.lookupProperty(dec.getProperty().getPreferredName())); dec.setAudit(defaults.getAudit()); dec.setLifecycle(defaults.getLifecycle()); StringBuilder builder = new StringBuilder(); for (char currentChar : dec.getPreferredDefinition().toCharArray()) { Character replacementChar = charReplacementMap.get(currentChar); builder.append(replacementChar != null ? replacementChar : currentChar); } dec.setPreferredDefinition(builder.toString()); logger.debug( "***** preferred name " + dec.getPreferredName() + " public ID " + dec.getPublicId()); newDec = dataElementConceptDAO.create(dec); logger.info(PropertyAccessor.getProperty("created.dec")); } else { newDec = (DataElementConcept) l.get(0); logger.info(PropertyAccessor.getProperty("existed.dec")); /* if DEC alreay exists, check context * If context is different, add Used_by alt_name */ dec.setId(newDec.getId()); if (!newDec.getContext().getId().equals(defaults.getContext().getId())) { AlternateName _an = DomainObjectFactory.newAlternateName(); _an.setName(defaults.getContext().getName()); _an.setType(AlternateName.TYPE_USED_BY); persisterUtil.addAlternateName(dec, _an); } } dec.setId(newDec.getId()); for (AlternateName _an : passedAltNames) { persisterUtil.addAlternateName(dec, _an); } for (Definition def : modelDefinitions) { persisterUtil.addAlternateDefinition(dec, def); } LogUtil.logAc(newDec, logger); logger.info("-- Public ID: " + newDec.getPublicId()); logger.info( PropertyAccessor.getProperty("oc.longName", newDec.getObjectClass().getLongName())); logger.info( PropertyAccessor.getProperty("prop.longName", newDec.getProperty().getLongName())); dec.setAcCsCsis(passedACCSCSI); persisterUtil.addPackageClassification(dec); it.set(newDec); // dec still referenced in DE. Need ID to retrieve it in DEPersister. dec.setId(newDec.getId()); } } logger.debug("***** End DEC persist"); } private DataElementConcept existingMapping(DataElementConcept dec) { List<String> eager = new ArrayList<String>(); eager.add(EagerConstants.AC_CS_CSI); List<DataElementConcept> l = dataElementConceptDAO.find(dec, eager); if (l.size() == 0) throw new PersisterException( PropertyAccessor.getProperty("dec.existing.error", ConventionUtil.publicIdVersion(dec))); DataElementConcept existingDec = l.get(0); return existingDec; } protected void sendProgressEvent(int status, int goal, String message) { if (progressListener != null) { ProgressEvent pEvent = new ProgressEvent(); pEvent.setMessage(message); pEvent.setStatus(status); pEvent.setGoal(goal); progressListener.newProgressEvent(pEvent); } } public void setProgressListener(ProgressListener listener) { progressListener = listener; } public void setPersisterUtil(PersisterUtil pu) { persisterUtil = pu; } private void initDAOs() { dataElementConceptDAO = DAOAccessor.getDataElementConceptDAO(); } }
public void apply() { if (!modified) return; // uncomment to enable feature // if(inheritedAttributes.isInherited(de)) { // if(!userPrefs.getBoolean("de.over.vd.mapping.warning")) { // DontWarnMeAgainDialog dontWarnDialog = new // DontWarnMeAgainDialog("de.over.vd.mapping.warning"); // } // } modified = false; de.setLongName(tempDE.getLongName()); de.setPublicId(tempDE.getPublicId()); de.setVersion(tempDE.getVersion()); de.setContext(tempDE.getContext()); de.setValueDomain(tempDE.getValueDomain()); fireElementChangeEvent(new ElementChangeEvent(node)); if (tempDE.getDataElementConcept() != null) { if (de.getDataElementConcept().getObjectClass().getPublicId() == null || de.getDataElementConcept().getObjectClass().getPublicId().length() == 0) { JOptionPane.showMessageDialog( null, PropertyAccessor.getProperty("oc.mapping.warning"), "Please note", JOptionPane.INFORMATION_MESSAGE); } de.getDataElementConcept() .getObjectClass() .setPublicId(tempDE.getDataElementConcept().getObjectClass().getPublicId()); de.getDataElementConcept() .getObjectClass() .setVersion(tempDE.getDataElementConcept().getObjectClass().getVersion()); de.getDataElementConcept() .getObjectClass() .setLongName(tempDE.getDataElementConcept().getObjectClass().getLongName()); de.getDataElementConcept() .getProperty() .setPublicId(tempDE.getDataElementConcept().getProperty().getPublicId()); de.getDataElementConcept() .getProperty() .setVersion(tempDE.getDataElementConcept().getProperty().getVersion()); } else { boolean found = false; List<DataElement> des = ElementsLists.getInstance().getElements(DomainObjectFactory.newDataElement()); for (DataElement curDe : des) { if (curDe.getDataElementConcept().getObjectClass() == de.getDataElementConcept().getObjectClass()) if (!StringUtil.isEmpty(curDe.getPublicId())) { found = true; } } if (!found) { de.getDataElementConcept().getObjectClass().setPublicId(null); de.getDataElementConcept().getObjectClass().setVersion(null); } } if (tempDE.getDataElementConcept() != null) { firePropertyChangeEvent(new PropertyChangeEvent(this, ButtonPanel.SWITCH, null, false)); firePropertyChangeEvent(new PropertyChangeEvent(this, ApplyButtonPanel.REVIEW, null, true)); } else { firePropertyChangeEvent(new PropertyChangeEvent(this, ButtonPanel.SWITCH, null, true)); firePropertyChangeEvent(new PropertyChangeEvent(this, ApplyButtonPanel.REVIEW, null, false)); } firePropertyChangeEvent(new PropertyChangeEvent(this, ApplyButtonPanel.SAVE, null, false)); }