/** * Artifact is either retrieved or prepared for later addition to registry * * @param ga * @return */ private GovernanceArtifact addArtifact(RBGGovernanceArtifact ga) { boolean checkChanged = false; boolean isNewer = false; GenericArtifactManager gam = registryFactory.getManagerForArtifactType(ga.getRegistryType()); GenericArtifact fa = (GenericArtifact) findMatchingArtifact(ga); log.info("working on: " + ga.getName()); try { if (fa != null) { isNewer = isVersionNewer(ga.getVersion(), fa.getAttribute("details_version")); checkChanged = updateAttributes(ga, fa); } else { fa = gam.newGovernanceArtifact(new QName(ga.getName())); // artifactname fa.setAttribute("details_version", ga.getVersion()); updateAttributes(ga, fa); gam.addGenericArtifact(fa); handleLifeCycle(ga, fa); } if (isNewer) { if (checkChanged) { gam.updateGenericArtifact(fa); log.info("updated: " + ga.getName()); } handleLifeCycle(ga, fa); } } catch (GovernanceException e) { log.error(e.getMessage()); } catch (RegistryException e) { log.error(e.getMessage()); } return fa; }
private void processModelContainer(ModelContainer mc) { Map<RBGGovernanceArtifact, GovernanceArtifact> rbgToGen = new HashMap<RBGGovernanceArtifact, GovernanceArtifact>(); Set<RBGGovernanceArtifact> toBeUpated = new HashSet<RBGGovernanceArtifact>(); // create Artifacts: apps, modules, appservices for (Application app : mc.getApplications()) { GovernanceArtifact ga = addArtifact(app); rbgToGen.put(app, ga); } for (Module module : mc.getModules()) { GovernanceArtifact ga = addArtifact(module); rbgToGen.put(module, ga); } for (ApplicationService as : mc.getApplicationServices()) { if (as instanceof HostProgram) { HostProgram hp = (HostProgram) as; GovernanceArtifact ga = addArtifact(hp); rbgToGen.put(as, ga); } } for (Table table : mc.getTables()) { GovernanceArtifact ga = addArtifact(table); rbgToGen.put(table, ga); } for (Infrastructure infra : mc.getInfrastructure()) { GovernanceArtifact ga = addArtifact(infra); rbgToGen.put(infra, ga); } // create Links for (UseRelation ur : mc.getUseRelations()) { GovernanceArtifact ga = rbgToGen.get(ur.getSource()); boolean needsUpdate = createLink(ur, ga); if (needsUpdate) { toBeUpated.add(ur.getSource()); } // CHECK FOR CHANGED VRSION!! } for (CallRelation cr : mc.getCallRelations()) { GovernanceArtifact ga = rbgToGen.get(cr.getSource()); boolean needsUpdate = createLink(cr, ga); if (needsUpdate) { toBeUpated.add(cr.getSource()); } } // update those, which really need it... List<RBGGovernanceArtifact> upds = new ArrayList<RBGGovernanceArtifact>(toBeUpated); for (RBGGovernanceArtifact ra : upds) { GenericArtifact ga = (GenericArtifact) rbgToGen.get(ra); GenericArtifactManager gam = registryFactory.getManagerForArtifactType(ra.getRegistryType()); try { gam.updateGenericArtifact(ga); } catch (GovernanceException e) { log.error("link creation problem addGenericArtifact " + e.getMessage()); } } }