Skip to content
Merged
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 @@ -20,8 +20,8 @@
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.jboss.resteasy.reactive.NoCache;
import org.vcell.restq.db.AdminRestDB;
import org.vcell.restq.db.UserRestDB;
import org.vcell.restq.services.AdminRestService;
import org.vcell.restq.services.UserRestService;
import org.vcell.restq.errors.exceptions.DataAccessWebException;
import org.vcell.restq.errors.exceptions.NotAuthenticatedWebException;
import org.vcell.restq.errors.exceptions.PermissionWebException;
Expand All @@ -41,13 +41,13 @@ public class AdminResource {
@Inject
SecurityIdentity securityIdentity;

private final AdminRestDB adminRestDB;
private final UserRestDB userRestDB;
private final AdminRestService adminRestService;
private final UserRestService userRestService;

@Inject
public AdminResource(AdminRestDB adminRestDB, UserRestDB userRestDB) {
this.adminRestDB = adminRestDB;
this.userRestDB = userRestDB;
public AdminResource(AdminRestService adminRestService, UserRestService userRestService) {
this.adminRestService = adminRestService;
this.userRestService = userRestService;
}

@GET
Expand All @@ -65,9 +65,9 @@ public Response getUsage() throws DataAccessWebException, NotAuthenticatedWebExc
if (securityIdentity.isAnonymous()){
throw new NotAuthenticatedWebException("not authenticated");
}
User vcellUser = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
User vcellUser = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
try {
String htmlString = adminRestDB.getUsageSummaryHtml(vcellUser);
String htmlString = adminRestService.getUsageSummaryHtml(vcellUser);
StreamingOutput fileStream = output -> {
try {
Document document = new Document();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.vcell.restq.Main;
import org.vcell.restq.db.BioModelRestDB;
import org.vcell.restq.db.UserRestDB;
import org.vcell.restq.services.BioModelRestService;
import org.vcell.restq.services.UserRestService;
import org.vcell.restq.errors.exceptions.*;
import org.vcell.restq.errors.exceptions.NotFoundWebException;
import org.vcell.restq.models.BioModel;
Expand All @@ -30,26 +30,26 @@ public class BioModelResource {
@Inject
SecurityIdentity securityIdentity;

private final BioModelRestDB bioModelRestDB;
private final UserRestDB userRestDB;
private final BioModelRestService bioModelRestService;
private final UserRestService userRestService;

@Inject
public BioModelResource(BioModelRestDB bioModelRestDB, UserRestDB userRestDB) {
this.bioModelRestDB = bioModelRestDB;
this.userRestDB = userRestDB;
public BioModelResource(BioModelRestService bioModelRestService, UserRestService userRestService) {
this.bioModelRestService = bioModelRestService;
this.userRestService = userRestService;
}

@GET
@Path("{bioModelID}")
@Operation(operationId = "getBioModel", summary = "Get BioModel.")
@Produces(MediaType.APPLICATION_JSON)
public BioModel getBioModelInfo(@PathParam("bioModelID") String bioModelID) throws DataAccessWebException, NotFoundWebException, PermissionWebException, NotAuthenticatedWebException {
User vcellUser = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.ALLOW_ANONYMOUS);
User vcellUser = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.ALLOW_ANONYMOUS);
if (vcellUser == null) {
vcellUser = Main.DUMMY_USER;
}
try {
BioModelRep bioModelRep = bioModelRestDB.getBioModelRep(new KeyValue(bioModelID), vcellUser);
BioModelRep bioModelRep = bioModelRestService.getBioModelRep(new KeyValue(bioModelID), vcellUser);
return BioModel.fromBioModelRep(bioModelRep);
}catch (ObjectNotFoundException e) {
throw new NotFoundWebException(e.getMessage(), e);
Expand All @@ -63,12 +63,12 @@ public BioModel getBioModelInfo(@PathParam("bioModelID") String bioModelID) thro
@Operation(operationId = "getBioModelVCML", summary = "Get the BioModel in VCML format.")
@Produces(MediaType.TEXT_XML)
public String getBioModelVCML(@PathParam("bioModelID") String bioModelID) throws DataAccessWebException, NotFoundWebException, PermissionWebException, NotAuthenticatedWebException {
User vcellUser = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.ALLOW_ANONYMOUS);
User vcellUser = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.ALLOW_ANONYMOUS);
if (vcellUser == null) {
vcellUser = Main.DUMMY_USER;
}
try {
return bioModelRestDB.getBioModel(vcellUser, new KeyValue(bioModelID));
return bioModelRestService.getBioModel(vcellUser, new KeyValue(bioModelID));
}catch (ObjectNotFoundException e) {
throw new NotFoundWebException(e.getMessage(), e);
} catch (DataAccessException e) {
Expand Down Expand Up @@ -112,9 +112,9 @@ public void getBioModelDiagram(@PathParam("bioModelID") String bioModelID){
@Path("{bioModelID}")
@Operation(operationId = "deleteBioModel", summary = "Delete the BioModel from VCell's database.")
public void deleteBioModel(@PathParam("bioModelID") String bioModelID) throws DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);;
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);;
try {
bioModelRestDB.deleteBioModel(user, new KeyValue(bioModelID));
bioModelRestService.deleteBioModel(user, new KeyValue(bioModelID));
} catch (DataAccessException e) {
throw new DataAccessWebException(e.getMessage(), e);
}
Expand All @@ -128,9 +128,9 @@ public void deleteBioModel(@PathParam("bioModelID") String bioModelID) throws Da
@Operation(operationId = "saveBioModel", summary = "Save's the given BioModel. Optional parameters of name and simulations to update due to math changes." +
" Returns saved BioModel as VCML.")
public String save(@Valid SaveBioModel saveBioModel) throws DataAccessWebException, UnprocessableContentWebException, PermissionWebException, NotAuthenticatedWebException {
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
try {
cbit.vcell.biomodel.BioModel savedBioModel = bioModelRestDB.save(user, saveBioModel.bioModelXML,
cbit.vcell.biomodel.BioModel savedBioModel = bioModelRestService.save(user, saveBioModel.bioModelXML,
saveBioModel.name.orElse(null), saveBioModel.simsRequiringUpdates.orElse(null));
return XmlHelper.bioModelToXML(savedBioModel);
} catch (DataAccessException e) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.vcell.restq.handlers.FieldData;
package org.vcell.restq.handlers;

import cbit.image.ImageException;
import cbit.vcell.field.io.FieldDataSpec;
Expand All @@ -17,7 +17,8 @@
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.jboss.resteasy.reactive.PartType;
import org.jboss.resteasy.reactive.RestForm;
import org.vcell.restq.db.UserRestDB;
import org.vcell.restq.services.FieldDataService;
import org.vcell.restq.services.UserRestService;
import org.vcell.restq.errors.exceptions.*;
import org.vcell.restq.errors.exceptions.NotFoundWebException;
import org.vcell.util.DataAccessException;
Expand All @@ -28,7 +29,6 @@
import org.vcell.util.document.KeyValue;
import org.vcell.util.document.User;
import org.vcell.util.document.VersionableType;
import org.w3c.www.http.HTTP;

import java.io.File;
import java.io.FileNotFoundException;
Expand All @@ -48,14 +48,14 @@ public class FieldDataResource {
@Inject
SecurityIdentity securityIdentity;

private final FieldDataDB fieldDataDB;
private final UserRestDB userRestDB;
private final FieldDataService fieldDataService;
private final UserRestService userRestService;
private final String allowedFieldDataNamesRegex = "^[a-zA-Z0-9_]*$";

@Inject
public FieldDataResource(FieldDataDB fieldDataDB, UserRestDB userRestDB){
this.fieldDataDB = fieldDataDB;
this.userRestDB = userRestDB;
public FieldDataResource(FieldDataService fieldDataService, UserRestService userRestService){
this.fieldDataService = fieldDataService;
this.userRestService = userRestService;
}


Expand All @@ -65,7 +65,7 @@ public FieldDataResource(FieldDataDB fieldDataDB, UserRestDB userRestDB){
@Operation(operationId = "getAllIDs", summary = "Get all of the ids used to identify, and retrieve field data.")
public ArrayList<FieldDataReference> getAllFieldDataIDs() throws DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try {
return fieldDataDB.getAllFieldDataIDs(userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER));
return fieldDataService.getAllFieldDataIDs(userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER));
} catch (DataAccessException e) {
throw new DataAccessWebException("Can't get field data ID's: " + e.getMessage(), e);
}
Expand All @@ -77,9 +77,9 @@ public ArrayList<FieldDataReference> getAllFieldDataIDs() throws DataAccessWebEx
@Operation(operationId = "getShapeFromID", summary = "Get the shape of the field data. That is it's size, origin, extent, times, and data identifiers.")
public FieldDataShape getFieldDataShapeFromID(@PathParam("fieldDataID") String fieldDataID) throws DataAccessWebException, NotFoundWebException, PermissionWebException, NotAuthenticatedWebException {
try {
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
KeyValue keyValue = new KeyValue(fieldDataID);
cbit.vcell.field.io.FieldDataShape results = fieldDataDB.getFieldDataShapeFromID(user, keyValue, FieldDataSpec.JOBINDEX_DEFAULT);
cbit.vcell.field.io.FieldDataShape results = fieldDataService.getFieldDataShapeFromID(user, keyValue, FieldDataSpec.JOBINDEX_DEFAULT);
return new FieldDataShape(results.extent, results.origin, results.iSize, results.variableInformation,results.times);
} catch (DataAccessException e) {
if (e.getCause() instanceof FileNotFoundException){
Expand All @@ -96,8 +96,8 @@ public FieldDataShape getFieldDataShapeFromID(@PathParam("fieldDataID") String f
@Operation(operationId = "createFromSimulation", summary = "Create new field data from existing simulation results.")
public void createNewFieldDataFromSimulation(@RestForm String simKeyReference, @RestForm int jobIndex, @RestForm String newFieldDataName) throws DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try {
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
fieldDataDB.saveFieldDataFromSimulation(user, new KeyValue(simKeyReference), jobIndex, newFieldDataName);
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
fieldDataService.saveFieldDataFromSimulation(user, new KeyValue(simKeyReference), jobIndex, newFieldDataName);
} catch (DataAccessException e) {
throw new DataAccessWebException(e.getMessage(), e);
}
Expand All @@ -119,12 +119,12 @@ public FieldDataSavedResults analyzeAndCreateFieldData(@RestForm @PartType(Media
@RestForm("annotation") @PartType(MediaType.TEXT_PLAIN) String annotation,
@RestForm("origin") @PartType(MediaType.APPLICATION_JSON) Origin origin) throws UnprocessableContentWebException, DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try{
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
if (!Pattern.matches(allowedFieldDataNamesRegex, fileName) || fileName.length() > 100 || fileName.isEmpty()){
throw new UnprocessableContentWebException("Invalid file name.");
}
FieldData fieldData = fieldDataDB.analyzeFieldDataFromFile(file, fileName);
ExternalDataIdentifier edi = fieldDataDB.saveNewFieldDataFromFile(fileName,
FieldData fieldData = fieldDataService.analyzeFieldDataFromFile(file, fileName);
ExternalDataIdentifier edi = fieldDataService.saveNewFieldDataFromFile(fileName,
channelNames, fieldData.shortSpecData, annotation,
user, times, origin, extent, iSize);
return new FieldDataSavedResults(edi.getName(), edi.getKey().toString());
Expand All @@ -146,12 +146,12 @@ public FieldDataSavedResults analyzeAndCreateFieldData(@RestForm @PartType(Media
public FieldDataSavedResults createFromFileWithDefaults(@RestForm @PartType(MediaType.APPLICATION_OCTET_STREAM) File file,
@RestForm String fieldDataName) throws UnprocessableContentWebException, DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try{
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
if (!Pattern.matches(allowedFieldDataNamesRegex, fieldDataName) || fieldDataName.length() > 100 || fieldDataName.isEmpty()){
throw new UnprocessableContentWebException("Invalid file name.");
}
FieldData fieldData = fieldDataDB.analyzeFieldDataFromFile(file, fieldDataName);
ExternalDataIdentifier edi = fieldDataDB.saveNewFieldDataFromFile(fieldDataName, fieldData.varNames, fieldData.shortSpecData,
FieldData fieldData = fieldDataService.analyzeFieldDataFromFile(file, fieldDataName);
ExternalDataIdentifier edi = fieldDataService.saveNewFieldDataFromFile(fieldDataName, fieldData.varNames, fieldData.shortSpecData,
fieldData.annotation, user, fieldData.times, fieldData.origin, fieldData.extent, fieldData.isize);
return new FieldDataSavedResults(edi.getName(), edi.getKey().toString());
} catch (DataFormatException e){
Expand All @@ -172,11 +172,11 @@ public FieldDataSavedResults createFromFileWithDefaults(@RestForm @PartType(Medi
"Filenames must be lowercase alphanumeric, and can contain underscores.")
public FieldData analyzeFile(@RestForm File file, @RestForm String fileName) throws UnprocessableContentWebException, DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try{
userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
if (!Pattern.matches(allowedFieldDataNamesRegex, fileName) || fileName.length() > 100 || fileName.isEmpty()){
throw new UnprocessableContentWebException("Invalid file name.");
}
return fieldDataDB.analyzeFieldDataFromFile(file, fileName);
return fieldDataService.analyzeFieldDataFromFile(file, fileName);
} catch (DataFormatException e){
throw new UnprocessableContentWebException(e.getMessage(), e);
} catch (DataAccessException e){
Expand All @@ -196,8 +196,8 @@ public FieldData analyzeFile(@RestForm File file, @RestForm String fileName) thr
public FieldDataSavedResults createNewFieldDataFromSpecification(FieldData saveFieldData) throws UnprocessableContentWebException, DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
FieldDataSavedResults fieldDataSavedResults;
try{
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
ExternalDataIdentifier edi = fieldDataDB.saveNewFieldDataFromFile(saveFieldData.name,
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
ExternalDataIdentifier edi = fieldDataService.saveNewFieldDataFromFile(saveFieldData.name,
saveFieldData.varNames, saveFieldData.shortSpecData, saveFieldData.doubleSpecData, saveFieldData.annotation,
user, saveFieldData.times, saveFieldData.origin, saveFieldData.extent, saveFieldData.isize);
fieldDataSavedResults = new FieldDataSavedResults(edi.getName(), edi.getKey().toString());
Expand All @@ -219,8 +219,8 @@ public FieldDataSavedResults createNewFieldDataFromSpecification(FieldData saveF
@Operation(operationId = "copyModelsFieldData", summary = "Copy all existing field data from a BioModel/MathModel that you have access to, but don't own.")
public Hashtable<String, ExternalDataIdentifier> copyFieldData(SourceModel sourceModel) throws UnprocessableContentWebException, DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try {
User user = userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER);
return fieldDataDB.copyModelsFieldData(user, new KeyValue(sourceModel.modelID()), sourceModel.modelType.getName());
User user = userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER);
return fieldDataService.copyModelsFieldData(user, new KeyValue(sourceModel.modelID()), sourceModel.modelType.getName());
} catch (MathException | XmlParseException | ExpressionException e){
throw new UnprocessableContentWebException(e.getMessage(), e);
} catch (DataAccessException e){
Expand All @@ -234,9 +234,9 @@ public Hashtable<String, ExternalDataIdentifier> copyFieldData(SourceModel sourc
@Operation(operationId = "delete", summary = "Delete the selected field data.")
public void deleteFieldData(@PathParam("fieldDataID") String fieldDataID) throws DataAccessWebException, PermissionWebException, NotAuthenticatedWebException {
try{
ExternalDataIdentifier edi = new ExternalDataIdentifier(new KeyValue(fieldDataID), userRestDB.getUserFromIdentity(securityIdentity, UserRestDB.UserRequirement.REQUIRE_USER),
ExternalDataIdentifier edi = new ExternalDataIdentifier(new KeyValue(fieldDataID), userRestService.getUserFromIdentity(securityIdentity, UserRestService.UserRequirement.REQUIRE_USER),
null);
fieldDataDB.deleteFieldData(edi);
fieldDataService.deleteFieldData(edi);
} catch (DataAccessException e) {
throw new DataAccessWebException(e.getMessage(), e);
}
Expand Down
Loading