protected boolean checkEntityAlreadyExists(final EntitySqlDao<M, E> transactional, final M entity, final InternalCallContext context) { return transactional.getById(entity.getId().toString(), context) != null; }
return modelDao.getTableName().getObjectType();
private Long insertHistory(final Long entityRecordId, final M entityModelDao, final ChangeType changeType, final InternalCallContext context) { final EntityHistoryModelDao<M, E> history = new EntityHistoryModelDao<M, E>(entityModelDao, entityRecordId, changeType, clock.getUTCNow()); sqlDao.addHistoryFromTransaction(history, context); final NonEntitySqlDao transactional = sqlDao.become(NonEntitySqlDao.class); /* return transactional.getLastHistoryRecordId(entityRecordId, entityModelDao.getHistoryTableName().getTableName()); */ return nonEntityDao.retrieveLastHistoryRecordIdFromTransaction(entityRecordId, entityModelDao.getHistoryTableName(), transactional); }
public void delete(final M entity, final InternalCallContext context) { entities.remove(entity.getId()); }
private void updateHistoryAndAudit(final String entityId, final Map<String, M> entities, final Map<String, Long> entityRecordIds, final ChangeType changeType, final InternalCallContext context) { // Make sure to re-hydrate the object (especially needed for create calls) final M reHydratedEntity = sqlDao.getById(entityId, context); final Long reHydratedEntityRecordId = sqlDao.getRecordId(entityId, context); final M entity = Objects.firstNonNull(reHydratedEntity, entities.get(entityId)); final Long entityRecordId = Objects.firstNonNull(reHydratedEntityRecordId, entityRecordIds.get(entityId)); final TableName tableName = entity.getTableName(); // Note: audit entries point to the history record id final Long historyRecordId; if (tableName.getHistoryTableName() != null) { historyRecordId = insertHistory(entityRecordId, entity, changeType, context); } else { historyRecordId = entityRecordId; } insertAudits(tableName, entityRecordId, historyRecordId, changeType, context); }
@Override public void create(final M entity, final InternalCallContext context) throws U { entities.put(entity.getId(), ImmutableMap.<Long, M>of(autoIncrement.incrementAndGet(), entity)); }
@Override public Void inTransaction(final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory) throws Exception { final EntitySqlDao<M, E> transactional = entitySqlDaoWrapperFactory.become(realSqlDao); if (checkEntityAlreadyExists(transactional, entity, context)) { throw generateAlreadyExistsException(entity, context); } transactional.create(entity, context); final M refreshedEntity = transactional.getById(entity.getId().toString(), context); postBusEventFromTransaction(entity, refreshedEntity, ChangeType.INSERT, entitySqlDaoWrapperFactory, context); return null; } };