/** * @see org.seasar.framework.jpa.metadata.EntityDesc#getEntityName() */ public String getEntityName() { return classDescriptor.getAlias(); }
/** Returns the class object of the specified type. */ public Class getJavaClass(Object type) { Class clazz = null; if (type instanceof Class) { clazz = (Class)type; } else if (type instanceof ClassDescriptor) { clazz = ((ClassDescriptor)type).getJavaClass(); } return clazz; }
private void processAdditionalTablePkFields(ClassDescriptor desc) { // only if there are additional tables if (!desc.hasMultipleTables()) { return; } DatabaseTable dbTbl = null; Iterator dbTblIter = desc.getTables().iterator(); while (dbTblIter.hasNext()) { dbTbl = (DatabaseTable) dbTblIter.next(); Map<DatabaseField, DatabaseField> srcFields = desc.getAdditionalTablePrimaryKeyFields().get(dbTbl); if ((null != srcFields) && srcFields.size() > 0) { // srcFields is from the secondary field to the primary key field // Let's make fk constraint from the secondary field to the primary key field List<DatabaseField> fkFields = new Vector<DatabaseField>(); List<DatabaseField> pkFields = new Vector<DatabaseField>(); for (DatabaseField pkField : srcFields.keySet()) { pkFields.add(pkField); fkFields.add(srcFields.get(pkField)); } addJoinColumnsFkConstraint(fkFields, pkFields); } } }
/** * ADVANCED: * Removes the locally defined mapping associated with a given attribute name. * This can be used in a amendment method before the descriptor has been initialized. */ public DatabaseMapping removeMappingForAttributeName(String attributeName) { DatabaseMapping mapping = getMappingForAttributeName(attributeName); getMappings().remove(mapping); return mapping; }
/** * Return whether the reference objects must be deleted * one by one, as opposed to with a single DELETE statement. */ protected boolean mustDeleteReferenceObjectsOneByOne() { ClassDescriptor referenceDescriptor = this.getReferenceDescriptor(); return referenceDescriptor.hasDependencyOnParts() || referenceDescriptor.usesOptimisticLocking() || (referenceDescriptor.hasInheritance() && referenceDescriptor.getInheritancePolicy().shouldReadSubclasses()) || referenceDescriptor.hasMultipleTables(); }
protected Collection getPrimaryKeyFieldsForTable(ClassDescriptor descriptor, DatabaseTable table) { Collection primaryKeyFields; if(table.equals(descriptor.getTables().firstElement())) { primaryKeyFields = descriptor.getPrimaryKeyFields(); } else { primaryKeyFields = ((Map)descriptor.getAdditionalTablePrimaryKeyFields().get(table)).values(); } return primaryKeyFields; }
getDescriptor().setMappings(Helper.concatenateVectors(getParentDescriptor().getMappings(), getDescriptor().getMappings())); getDescriptor().setQueryKeys(Helper.concatenateMaps(getParentDescriptor().getQueryKeys(), getDescriptor().getQueryKeys())); addFieldsToParent(getDescriptor().getFields()); Vector parentsFields = (Vector)getParentDescriptor().getFields().clone(); Helper.addAllUniqueToVector(parentsFields, getDescriptor().getFields()); getDescriptor().setFields(parentsFields); if (!getDescriptor().usesOptimisticLocking() && getParentDescriptor().usesOptimisticLocking()) { getDescriptor().setOptimisticLockingPolicy((OptimisticLockingPolicy)getParentDescriptor().getOptimisticLockingPolicy().clone()); getDescriptor().getOptimisticLockingPolicy().setDescriptor(getDescriptor()); CMPPolicy parentCMPPolicy = getDescriptor().getInheritancePolicy().getParentDescriptor().getCMPPolicy(); if (parentCMPPolicy != null) { CMPPolicy cmpPolicy = getDescriptor().getCMPPolicy(); if (cmpPolicy == null) { cmpPolicy = new CMPPolicy(); getDescriptor().setCMPPolicy(cmpPolicy);
ClassDescriptor descriptor = (ClassDescriptor)it.next(); if(descriptor.isAggregateDescriptor() || descriptor.isAggregateCollectionDescriptor()) { continue; String entityName = descriptor.getAlias(); String className = descriptor.getJavaClass().getName(); String name; descriptor.setIdentityMapClass(type); descriptor.setIdentityMapSize(size.intValue()); descriptor.setIsIsolated(!shared.booleanValue());
/** * PUBLIC: * Add the descriptor to the project. */ public void addDescriptor(ClassDescriptor descriptor) { getOrderedDescriptors().add(descriptor); String alias = descriptor.getAlias(); if (alias != null) { addAlias(alias, descriptor); } // Avoid loading class definition at this point if we haven't done so yet. if ((descriptors != null) && !descriptors.isEmpty()) { getDescriptors().put(descriptor.getJavaClass(), descriptor); } }
public EntityInformation[] locate(EntityManagerFactory entityManagerFactory, JpaGpsDevice device) throws JpaGpsDeviceException { CompassGpsInterfaceDevice gps = (CompassGpsInterfaceDevice) device.getGps(); EntityManager entityManager = (EntityManager) entityManagerFactory.createEntityManager(); Session session = entityManager.getServerSession(); entityManager.close(); ArrayList<EntityInformation> entitiesList = new ArrayList<EntityInformation>(); Map descriptors = session.getDescriptors(); for (Object o : descriptors.values()) { ClassDescriptor classDescriptor = (ClassDescriptor) o; String entityname = classDescriptor.getJavaClassName(); if (!gps.hasMappingForEntityForIndex((entityname))) { if (log.isDebugEnabled()) { log.debug("Entity [" + entityname + "] does not have compass mapping, filtering it out"); } continue; } if (shouldFilter(entityname, classDescriptor, device)) { continue; } Class<?> clazz = classDescriptor.getJavaClass(); ResourceMapping resourceMapping = gps.getMappingForEntityForIndex(entityname); EntityInformation entityInformation = new EntityInformation(clazz, classDescriptor.getAlias(), resourceMapping.getSubIndexHash().getSubIndexes()); entitiesList.add(entityInformation); if (log.isDebugEnabled()) { log.debug("Entity [" + entityname + "] will be indexed"); } } return entitiesList.toArray(new EntityInformation[entitiesList.size()]); }
/** * INTERNAL: Not to be confused with the public getField(String) * This returns a collection of all fields associated with this object. Really * only applies to query keys representing an object or to expression builders. */ public Vector getFields() { if (getDescriptor() == null) { return new Vector(1); } if ((descriptor.hasInheritance() && ! descriptor.getInheritancePolicy().hasMultipleTableChild()) || (shouldUseOuterJoinForMultitableInheritance())){ // return all fields because we can. return descriptor.getAllFields(); }else{ return descriptor.getFields(); } }
TableDefinition tblDef = null; DatabaseTable dbTbl = null; Iterator dbTblIter = desc.getTables().iterator(); Iterator fieldIter = desc.getFields().iterator(); DatabaseField dbField = null; isPKField = desc.getPrimaryKeyFields().contains(dbField); Map secondaryKeyMap = (Map) desc.getAdditionalTablePrimaryKeyFields().get(dbField.getTable()); if (isPKField) { String sequenceName = desc.getSequenceNumberName(); DatabaseLogin login = project.getLogin(); Sequence seq = login.getSequence(sequenceName);
createPrimaryKeyExpression(session); List primaryKeyfields = getDescriptor().getPrimaryKeyFields(); List primaryKeyFields = getDescriptor().getPrimaryKeyFields(); for (int index = 0; index < primaryKeyFields.size(); index++) { DatabaseField primaryKeyField = (DatabaseField)primaryKeyFields.get(index); DatabaseMapping mapping = getMappingForField(primaryKeyField); if ((mapping == null) && (!getDescriptor().isAggregateDescriptor()) && (!getDescriptor().isAggregateCollectionDescriptor())) { throw DescriptorException.noMappingForPrimaryKey(primaryKeyField, getDescriptor()); if (getDescriptor().hasMultipleTables() && (mapping != null)) { for (Map keyMapping : getDescriptor().getAdditionalTablePrimaryKeyFields().values()) { DatabaseField secondaryField = (DatabaseField) keyMapping.get(primaryKeyField); getDescriptor().setHasSimplePrimaryKey(hasSimplePrimaryKey);
/** * Read all rows from the database. * @return Vector containing the database rows. * @exception DatabaseException - an error has occurred on the database. */ public Vector selectAllRows() throws DatabaseException { if (getDescriptor().hasInheritance() && getDescriptor().getInheritancePolicy().requiresMultipleTableSubclassRead() && (!getDescriptor().getInheritancePolicy().hasView())) { return getDescriptor().getInheritancePolicy().selectAllRowUsingMultipleTableSubclassRead((ReadAllQuery)getQuery()); } else { return selectAllRowsFromTable(); } }
/** * INTERNAL: * Notify the event listeners. */ public void notifyListeners(DescriptorEvent event) { if (hasAnyListeners()) { for (int index = 0; index < getEventListeners().size(); index++) { DescriptorEventListener listener = (DescriptorEventListener)getEventListeners().get(index); notifyListener(listener, event); } } // Also must notify any inherited listeners. if (getDescriptor().isChildDescriptor()) { getDescriptor().getInheritancePolicy().getParentDescriptor().getEventManager().notifyListeners(event); } }
/** * Convenience method */ protected ObjectBuilder getObjectBuilderForClass(Class javaClass, AbstractSession session) { return getReferenceDescriptor(javaClass, session).getObjectBuilder(); }
if ((!shouldMaintainCache()) && shouldRefreshIdentityMapResult() && (!descriptor.isAggregateCollectionDescriptor())) { throw QueryException.refreshNotPossibleWithoutCache(this); if (descriptor.isAggregateDescriptor()) { if ((!getDescriptor().hasFetchGroupManager()) && ((getFetchGroup() != null) || (getFetchGroupName() != null))) { throw QueryException.fetchGroupValidOnlyIfFetchGroupManagerInDescriptor(getDescriptor().getJavaClassName(), getName()); if (getDescriptor().hasFetchGroupManager()) { getDescriptor().getFetchGroupManager().prepareQueryWithFetchGroup(this);
/** * PUBLIC: * Get the event manager for the descriptor. The event manager is responsible * for managing the pre/post selectors. */ public DescriptorEventManager getDescriptorEventManager() { return getEventManager(); }
/** * Add all of the objects of the class and all of its subclasses. * The session is needed because there is no other way to find all subclasses. */ public void addAllObjectsForAbstractClass(Class objectsClass, AbstractSession session, Vector allObjects) { ClassDescriptor descriptor = session.getDescriptor(objectsClass); addAllObjectsForClass(objectsClass, allObjects); for (Enumeration enumeration = descriptor.getInheritancePolicy().getChildDescriptors().elements(); enumeration.hasMoreElements();) { addAllObjectsForAbstractClass(((ClassDescriptor)enumeration.nextElement()).getJavaClass(), session, allObjects); } }
this.readAllQuery.setReferenceClassName(getDescriptor().getJavaClassName()); try { readAllQuery.setReferenceClass(getDescriptor().getJavaClass()); } catch (ConversionException exception) {