Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,13 @@ public int update(DbObjectSchema schema, Map<String, String> params, Map<String,
}
}

if (field.getConnectedSchema() != null)
value = field.getConnectedSchema().getJpaRepository().findById(value).get();
if (field.getConnectedSchema() != null) {
if (value != null) {
value = field.getConnectedSchema().getJpaRepository().findById(value).orElse(null);
} else {
value = null;
}
}

update.set(root.get(field.getJavaName()), value);
hasUpdate = true;
Expand All @@ -143,8 +148,10 @@ public int update(DbObjectSchema schema, Map<String, String> params, Map<String,
if (!hasUpdate) return 0;

String pkName = schema.getPrimaryKey().getJavaName();
update.where(cb.equal(root.get(pkName), params.get(schema.getPrimaryKey().getName())));

Object parsedPk = schema.getPrimaryKey().getType().parseValue(
params.get(schema.getPrimaryKey().getName())
);
update.where(cb.equal(root.get(pkName), parsedPk));
Query query = entityManager.createQuery(update);
return query.executeUpdate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ public SnapAdminRepository() {
@SuppressWarnings({ "rawtypes", "unchecked" })
public Optional<DbObject> findById(DbObjectSchema schema, Object id) {
SimpleJpaRepository repository = schema.getJpaRepository();
Optional optional = repository.findById(id);
Object parsedId = parsePrimaryKey(schema, id);
Optional optional = repository.findById(parsedId);
if (optional.isEmpty())
return Optional.empty();
else {
Expand Down Expand Up @@ -194,7 +194,8 @@ private Object save(DbObjectSchema schema, DbObject o) {
*/
@Transactional("transactionManager")
public void attachManyToMany(DbObjectSchema schema, Object id, Map<String, List<String>> params) {
Optional<DbObject> optional = findById(schema, id);
Object parsedId = parsePrimaryKey(schema, id);
Optional<DbObject> optional = findById(schema, parsedId);

DbObject dbObject = optional.orElseThrow(() -> {
return new SnapAdminException("Unable to retrieve newly inserted item");
Expand All @@ -210,7 +211,8 @@ public void attachManyToMany(DbObjectSchema schema, Object id, Map<String, List<

List<DbObject> traverseMany = new ArrayList<>();
for (String oId : idValues) {
Optional<DbObject> findById = findById(linkedSchema, oId);
Object linkedParsedId = parsePrimaryKey(linkedSchema, oId);
Optional<DbObject> findById = findById(linkedSchema, linkedParsedId);
if (findById.isPresent()) {
traverseMany.add(findById.get());
}
Expand Down Expand Up @@ -324,7 +326,12 @@ public DbQueryResult executeQuery(String sql) {
@SuppressWarnings("unchecked")
@Transactional("transactionManager")
public void delete(DbObjectSchema schema, String id) {
schema.getJpaRepository().deleteById(id);
Object parsedId = parsePrimaryKey(schema, id);
schema.getJpaRepository().deleteById(parsedId);
}


private Object parsePrimaryKey(DbObjectSchema schema, Object rawId) {
DbField idField = schema.getFieldByName("id");
return idField.getType().parseValue(rawId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ public String getFragmentName() {

@Override
public Object parseValue(Object value) {
return java.util.UUID.fromString(value.toString());
if (value == null) return null;
String str = value.toString().trim();
if (str.isEmpty()) return null;
return java.util.UUID.fromString(str);
}

@Override
Expand Down
Loading