public EntityList map(int index, ResultSet resultSet, StatementContext ctx) throws SQLException { EntityList list = new EntityList(); list.setId((UUID) resultSet.getObject("id")); list.setParentId((UUID) resultSet.getObject("parent_id")); list.setSlug(resultSet.getString("slug")); list.setHint(resultSet.getString("hint")); list.setType(resultSet.getString("entity_type")); if (resultSet.getArray("entities") != null) { // There's no support for getting the pg uuid array as a Java UUID array (or even String array) at the time // this is written, we have to iterate over the array own result set and construct the Java array ourselves List<UUID> ids = new ArrayList<>(); Array array = resultSet.getArray("entities"); if (array != null) { ResultSet entitiesResultSet = array.getResultSet(); while (entitiesResultSet.next()) { ids.add((UUID) entitiesResultSet.getObject("value")); } list.setEntities(ids); } } return list; } }
public void update(@Valid EntityList list) throws EntityDoesNotExistException, InvalidEntityException { EntityList originalList; this.dao.begin(); originalList = getStoredEntityList(list); if (originalList == null) { this.dao.commit(); throw new EntityDoesNotExistException(); } getObservationManager().notify(new EntityUpdatingEvent(), list); list.setId(originalList.getId()); Integer updatedRows = this.dao.updateEntityList(list); this.dao.commit(); if (updatedRows <= 0) { throw new StoreException("No rows was updated when updating list"); } getObservationManager().notify(new EntityUpdatedEvent(), list); }
public EntityList create(@Valid EntityList list) throws EntityAlreadyExistsException, InvalidEntityException { EntityList originalList; this.dao.begin(); originalList = getStoredEntityList(list); if (originalList != null) { this.dao.commit(); throw new EntityAlreadyExistsException(); } getObservationManager().notify(new EntityCreatingEvent(), list); UUID entityId = UUID.randomUUID(); list.setId(entityId); if (list.getParentId() != null) { this.dao.createChildEntity(list, ENTITY_LIST_TABLE_NAME, getTenant()); } else { this.dao.createEntity(list, ENTITY_LIST_TABLE_NAME, getTenant()); } this.dao.createEntityList(list); this.dao.commit(); getObservationManager().notify(new EntityCreatedEvent(), list); return list; }
public EntityList getOrCreate(EntityList list) throws InvalidEntityException { EntityList originalList; this.dao.begin(); originalList = getStoredEntityList(list); if (originalList != null) { this.dao.commit(); return originalList; } getObservationManager().notify(new EntityCreatingEvent(), list); UUID entityId = UUID.randomUUID(); list.setId(entityId); Integer created; if (list.getParentId() != null) { created = this.dao.createChildEntityIfItDoesNotExist(list, ENTITY_LIST_TABLE_NAME, getTenant()); } else { created = this.dao.createEntityIfItDoesNotExist(list, ENTITY_LIST_TABLE_NAME, getTenant()); } if (created > 0) { this.dao.createEntityList(list); } this.dao.commit(); getObservationManager().notify(new EntityCreatedEvent(), list); return getStoredEntityList(list); }