parentKey = value;
} else if(KIND_FIELD.equals(fieldName)){
kind = value;
} else if(fieldName.startsWith(UploadStatus.FLAG_PREFIX)){
String name = fieldName.substring(UploadStatus.FLAG_PREFIX.length());
UploadStatus status = UploadStatus.valueOf(UploadStatus.class, value);
uploadStatuses.put(name, status);
} else {
regularProperties.put(fieldName, value);
}
} else {
System.out.println("File field " + fieldName
+ " with file name " + item.getName()
+ " detected.");
byte[] content = IOUtils.toByteArray(stream);
uploadContents.put(fieldName, new ByteArrayHolder(content));
}
}
} catch (FileUploadException e) {
throw new ServletException(e);
}
Entity entity;
if(key == null || key.isEmpty()){
//create new
entity = dh.createEntity(kind, parentKey, regularProperties);
} else {
//update existing
entity = dh.find(key);
dh.setProperties(entity, regularProperties);
dh.save(entity);
}
for(String blobField: uploadStatuses.keySet()){
UploadStatus status = uploadStatuses.get(blobField);
switch(status){
case DELETE:
if(entity == null){
throw new IllegalArgumentException("Attempt to delete blob " + blobField + " of entity that does not exist, key = " + key);
}