/** * Reloads the {@link Entity} from database using the current {@code Entity} className and persistenceId * * @param entityToReload the entity to be reloaded * @return the {@link Entity} reload from the database * @throws SBusinessDataNotFoundException */ public Entity reloadEntity(Entity entityToReload) throws SBusinessDataNotFoundException { final Class realClass = getEntityRealClass(entityToReload); return businessDataRepository.findById(realClass, entityToReload.getPersistenceId()); }
@SuppressWarnings("unchecked") protected Object getBusinessData(final String businessDataName, final long containerId, final String containerType) throws SBonitaReadException { try { final SRefBusinessDataInstance reference = refBusinessDataRetriever.getRefBusinessDataInstance(new BusinessDataContext(businessDataName, new Container(containerId, containerType))); final Class<Entity> dataClass = (Class<Entity>) Thread.currentThread().getContextClassLoader().loadClass(reference.getDataClassName()); if (reference instanceof SSimpleRefBusinessDataInstance) { final SSimpleRefBusinessDataInstance simpleRef = (SSimpleRefBusinessDataInstance) reference; final Long dataId = simpleRef.getDataId(); if (dataId != null) { return businessDataRepository.findById(dataClass, dataId); } return dataClass.newInstance(); } final SMultiRefBusinessDataInstance multiRef = (SMultiRefBusinessDataInstance) reference; final List<Long> dataIds = multiRef.getDataIds(); if (!dataIds.isEmpty()) { return businessDataRepository.findByIds(dataClass, dataIds); } return new ArrayList<Entity>(); } catch (final Exception e) { throw new SBonitaReadException(e); } }
@Override public Serializable getJsonEntity(final String entityClassName, final Long identifier, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Entity entity = businessDataRepository.findById(entityClass, identifier); return jsonBusinessDataSerializer.serializeEntity(entity, businessDataURIPattern); }
@SuppressWarnings("unchecked") protected Object getBusinessData(final String businessDataName, final long containerId, final String containerType) throws SBonitaReadException { try { final SRefBusinessDataInstance reference = refBusinessDataRetriever.getRefBusinessDataInstance(new BusinessDataContext(businessDataName, new Container(containerId, containerType))); final Class<Entity> dataClass = (Class<Entity>) Thread.currentThread().getContextClassLoader().loadClass(reference.getDataClassName()); if (reference instanceof SSimpleRefBusinessDataInstance) { final SSimpleRefBusinessDataInstance simpleRef = (SSimpleRefBusinessDataInstance) reference; final Long dataId = simpleRef.getDataId(); if (dataId != null) { return businessDataRepository.findById(dataClass, dataId); } return dataClass.newInstance(); } final SMultiRefBusinessDataInstance multiRef = (SMultiRefBusinessDataInstance) reference; final List<Long> dataIds = multiRef.getDataIds(); if (!dataIds.isEmpty()) { return businessDataRepository.findByIds(dataClass, dataIds); } return new ArrayList<Entity>(); } catch (final Exception e) { throw new SBonitaReadException(e); } }
/** * Reloads the {@link Entity} from database using the current {@code Entity} className and persistenceId * * @param entityToReload the entity to be reloaded * @return the {@link Entity} reload from the database * @throws SBusinessDataNotFoundException */ public Entity reloadEntity(Entity entityToReload) throws SBusinessDataNotFoundException { final Class realClass = getEntityRealClass(entityToReload); return businessDataRepository.findById(realClass, entityToReload.getPersistenceId()); }
@Override public Serializable getJsonEntity(final String entityClassName, final Long identifier, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Entity entity = businessDataRepository.findById(entityClass, identifier); return jsonBusinessDataSerializer.serializeEntity(entity, businessDataURIPattern); }
@SuppressWarnings("unchecked") protected void removeBusinessData(final SRefBusinessDataInstance reference) throws ClassNotFoundException, SBusinessDataNotFoundException { final Class<Entity> dataClass = (Class<Entity>) Thread.currentThread().getContextClassLoader().loadClass(reference.getDataClassName()); if (reference instanceof SSimpleRefBusinessDataInstance) { final SSimpleRefBusinessDataInstance simpleRef = (SSimpleRefBusinessDataInstance) reference; final Entity entity = businessDataRepository.findById(dataClass, simpleRef.getDataId()); businessDataRepository.remove(entity); } else { final SMultiRefBusinessDataInstance multiRef = (SMultiRefBusinessDataInstance) reference; for (final Long dataId : multiRef.getDataIds()) { final Entity entity = businessDataRepository.findById(dataClass, dataId); businessDataRepository.remove(entity); } } }
@SuppressWarnings("unchecked") protected void removeBusinessData(final SRefBusinessDataInstance reference) throws ClassNotFoundException, SBusinessDataNotFoundException { final Class<Entity> dataClass = (Class<Entity>) Thread.currentThread().getContextClassLoader().loadClass(reference.getDataClassName()); if (reference instanceof SSimpleRefBusinessDataInstance) { final SSimpleRefBusinessDataInstance simpleRef = (SSimpleRefBusinessDataInstance) reference; final Entity entity = businessDataRepository.findById(dataClass, simpleRef.getDataId()); businessDataRepository.remove(entity); } else { final SMultiRefBusinessDataInstance multiRef = (SMultiRefBusinessDataInstance) reference; for (final Long dataId : multiRef.getDataIds()) { final Entity entity = businessDataRepository.findById(dataClass, dataId); businessDataRepository.remove(entity); } } }
/** * Retrieves the Business Data related to the given {@link SSimpleRefBusinessDataInstance}. If the {@code SSimpleRefBusinessDataInstance} does not * references any Business Data the result will be null. * * @param dataRef the business data reference * @param bizClass the business data class * @return the Business Data related to the given {@code SSimpleRefBusinessDataInstance} or null if no Business Data is referenced. * @throws SBusinessDataNotFoundException when no Business Data is found for the given id */ public Entity getSimpleBusinessData(SSimpleRefBusinessDataInstance dataRef, Class<? extends Entity> bizClass) throws SBusinessDataNotFoundException { if (dataRef.getDataId() == null) { return null; } final Entity entity = businessDataRepository.findById(bizClass, dataRef.getDataId()); return proxyfier.proxify(entity); }
/** * Retrieves the Business Data related to the given {@link SSimpleRefBusinessDataInstance}. If the {@code SSimpleRefBusinessDataInstance} does not * references any Business Data the result will be null. * * @param dataRef the business data reference * @param bizClass the business data class * @return the Business Data related to the given {@code SSimpleRefBusinessDataInstance} or null if no Business Data is referenced. * @throws SBusinessDataNotFoundException when no Business Data is found for the given id */ public Entity getSimpleBusinessData(SSimpleRefBusinessDataInstance dataRef, Class<? extends Entity> bizClass) throws SBusinessDataNotFoundException { if (dataRef.getDataId() == null) { return null; } final Entity entity = businessDataRepository.findById(bizClass, dataRef.getDataId()); return proxyfier.proxify(entity); }
@SuppressWarnings("unchecked") @Override public Serializable getJsonChildEntity(final String entityClassName, final Long identifier, final String childFieldName, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Object entity = businessDataRepository.findById(entityClass, identifier); Object childEntity; java.lang.reflect.Type getterReturnType; try { final String getterName = ClassReflector.getGetterName(childFieldName); childEntity = ClassReflector.invokeGetter(entity, getterName); getterReturnType = ClassReflector.getGetterReturnType(entityClass, getterName); } catch (final SReflectException e) { throw new SBusinessDataRepositoryException(e); } if (childEntity == null) { return JsonBusinessDataSerializer.EMPTY_OBJECT; } if (childEntity instanceof Entity) { final Entity unwrap = businessDataRepository.unwrap((Entity) childEntity); return jsonBusinessDataSerializer.serializeEntity(unwrap, businessDataURIPattern); } else if (childEntity instanceof List) { final Class<?> type = (Class<?>) ((ParameterizedType) getterReturnType).getActualTypeArguments()[0]; if (Entity.class.isAssignableFrom(type)) { return jsonBusinessDataSerializer.serializeEntities((List<Entity>) childEntity, businessDataURIPattern); } } return null; }
@SuppressWarnings("unchecked") @Override public Serializable getJsonChildEntity(final String entityClassName, final Long identifier, final String childFieldName, final String businessDataURIPattern) throws SBusinessDataNotFoundException, SBusinessDataRepositoryException { final Class<? extends Entity> entityClass = loadClass(entityClassName); final Object entity = businessDataRepository.findById(entityClass, identifier); Object childEntity; java.lang.reflect.Type getterReturnType; try { final String getterName = ClassReflector.getGetterName(childFieldName); childEntity = ClassReflector.invokeGetter(entity, getterName); getterReturnType = ClassReflector.getGetterReturnType(entityClass, getterName); } catch (final SReflectException e) { throw new SBusinessDataRepositoryException(e); } if (childEntity == null) { return JsonBusinessDataSerializer.EMPTY_OBJECT; } if (childEntity instanceof Entity) { final Entity unwrap = businessDataRepository.unwrap((Entity) childEntity); return jsonBusinessDataSerializer.serializeEntity(unwrap, businessDataURIPattern); } else if (childEntity instanceof List) { final Class<?> type = (Class<?>) ((ParameterizedType) getterReturnType).getActualTypeArguments()[0]; if (Entity.class.isAssignableFrom(type)) { return jsonBusinessDataSerializer.serializeEntities((List<Entity>) childEntity, businessDataURIPattern); } } return null; }