package org.cloudgraph.web.etl.loader; import org.cloudgraph.web.config.imex.DataImport; import org.cloudgraph.web.sdo.categorization.Category; import org.cloudgraph.web.sdo.categorization.query.QCategory; import org.cloudgraph.web.sdo.meta.Classifier; import org.cloudgraph.web.sdo.meta.Clazz; import org.cloudgraph.web.sdo.meta.InstanceSpecification; import org.cloudgraph.web.sdo.meta.Package; import org.cloudgraph.web.sdo.meta.Property; import org.cloudgraph.web.sdo.meta.query.QClassifier; import org.cloudgraph.web.sdo.meta.query.QClazz; import org.cloudgraph.web.sdo.meta.query.QInstanceSpecification; import org.cloudgraph.web.sdo.meta.query.QPackage; import org.cloudgraph.web.sdo.meta.query.QProperty; import org.cloudgraph.web.sdo.personalization.Role; import org.cloudgraph.web.sdo.personalization.query.QRole; import org.plasma.config.DataAccessProviderName; import org.plasma.sdo.access.client.PojoDataAccessClient; import org.plasma.sdo.access.client.SDODataAccessClient; import commonj.sdo.DataGraph; public abstract class AbstractLoader { protected SDODataAccessClient service; protected AbstractLoader(DataImport dataImport) { this.service = new SDODataAccessClient( new PojoDataAccessClient( DataAccessProviderName.valueOf(dataImport.getProviderName()))); } protected Package fetchPackage(String uuid) { QPackage query = QPackage.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no package results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Package result = (Package)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected Role fetchRole(String uuid) { QRole query = QRole.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no package results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Role result = (Role)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected Category fetchCat(String uuid) { QCategory query = QCategory.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Category result = (Category)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected Clazz fetchClazz(String uuid) { QClazz query = QClazz.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Clazz result = (Clazz)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected Classifier fetchClassifier(String uuid) { QClassifier query = QClassifier.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Classifier result = (Classifier)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected InstanceSpecification fetchInstance(String uuid) { QInstanceSpecification query = QInstanceSpecification.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no package results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); InstanceSpecification result = (InstanceSpecification)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } protected Property fetchProperty(String uuid) { QProperty query = QProperty.newQuery(); query.select(query.wildcard()); query.where(query.externalId().eq(uuid)); DataGraph[] results = service.find(query); if (results == null) throw new RuntimeException("no package results for, " + uuid); if (results.length > 1) throw new RuntimeException("multiple results for, " + uuid); Property result = (Property)results[0].getRootObject(); result.setDataGraph(null); // so can re parent return result; } }