geoportal-logic/src/test/java/org/gcube/application/geoportal/UseCases.java

140 lines
6.0 KiB
Java

package org.gcube.application.geoportal;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.gcube.application.geoportal.managers.ConcessioneManager;
import org.gcube.application.geoportal.managers.ManagerFactory;
import org.gcube.application.geoportal.model.InputStreamDescriptor;
import org.gcube.application.geoportal.model.concessioni.Concessione;
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
import org.gcube.application.geoportal.model.content.UploadedImage;
import org.gcube.application.geoportal.model.report.PublicationReport;
import org.gcube.application.geoportal.model.report.ValidationReport;
import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus;
import org.gcube.application.geoportal.utils.Files;
import org.gcube.application.geoportal.utils.Serialization;
import org.junit.Assert;
public class UseCases {
public static void main(String[] args) throws FileNotFoundException, IOException {
TokenSetter.set("/gcube/devNext/NextNext");
// TokenSetter.set("/pred4s/preprod/preVRE");
try {
// System.out.println("Try to create..");
// Concessione conc=registerNewConcessione();
// long id=conc.getId();
long id=48;
System.out.println("Tryint to read by id "+id);
readConcessione(id);
}catch(Throwable t) {
System.err.println("ALERT "+t.getMessage());
throw t;
}
}
public static Concessione registerNewConcessione() throws FileNotFoundException, IOException{
ConcessioneManager manager=null;
try {
//Preparo l'istanza del modello con i vari campi compilati e senza gli allegati
Concessione conc=TestModel.prepareEmptyConcessione();
//Ottengo il manager per il progetto da registrare (tipi progetto : concessioni, mosi, mopr etc..)
manager=ManagerFactory.registerNew(conc);
//Preparo l'istanza dell'oggetto relazione scavo con i campi compilati e senza allegati
RelazioneScavo rel=TestModel.prepareConcessione().getRelazioneScavo();
//Istruisco il manager per gestire il payload della relazione di scavo, specificando il nome del file originale
manager.setRelazioneScavo(rel,
new InputStreamDescriptor(
new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")),"relazione.pdf"));
//Per ogni immagine preparo l'istanza dell'oggetto uploadedimage con i campi compilati e senza allegati
for(UploadedImage img:TestModel.prepareConcessione().getImmaginiRappresentative())
//Istruisco il manager per gestire il payload dell' immagine, specificando il nome del file originale
manager.addImmagineRappresentativa(img,
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/immagine.png")),img.getTitolo()));
//Per ogni immagine preparo l'istanza dell'oggetto layerconcessione con i campi compilati e senza allegati
LayerConcessione posizionamento=TestModel.prepareConcessione().getPosizionamentoScavo();
//Istruisco il manager per gestire il/i payload del layer, specificando i nomi dei file originali
manager.setPosizionamento(posizionamento,
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.dbf")),"pos.dbf"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.prj")),"pos.prj"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.qpj")),"pos.qpj"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.shp")),"pos.shp"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.shx")),"pos.shx"));
for(LayerConcessione layer:TestModel.prepareConcessione().getPianteFineScavo())
//Istruisco il manager per gestire il/i payload del layer, specificando i nomi dei file originali
manager.addPiantaFineScavo(layer,
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.dbf")),"pianta.dbf"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.prj")),"pianta.prj"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.qpj")),"pianta.qpj"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.shp")),"pianta.shp"),
new InputStreamDescriptor(new FileInputStream(Files.getFileFromResources("concessioni/pos.shx")),"pianta.shx"));
//If true -> data are published into the SDI
Boolean publish=true;
//NB la validazione viene CMQ triggerata a commit time.
//In caso di errore viene lanciata una ValidationException
Concessione prepared=manager.getRecord();
System.out.println("Object before validation is "+prepared);
ValidationReport report=manager.getRecord().validate();
System.out.println("Report is : "+report.prettyPrint());
Assert.assertEquals(report.getStatus(),ValidationStatus.PASSED);
System.out.println("Object after validation is "+prepared);
/*Chiedo al manager di salvare il progetto, causando :
*scrittura sul WS
*pubblicazione sull'SDI (boolean publish)
*scrittura sul DB di applicazione sia dei meta che dei vari link */
//Metodo con eccezioni
// Concessione registered=manager.commit(publish);
//Metodo con report
PublicationReport pubReport=manager.commitSafely(publish);
Concessione registered=(Concessione) pubReport.getTheRecord();
System.out.println("REGISTERED "+registered);
System.out.println("Report is "+pubReport.prettyPrint());
Assert.assertFalse(pubReport.getStatus().equals(ValidationStatus.ERROR));
return registered;
//--- FINALLY --/
}finally{
manager.shutdown();
}
}
public static void readConcessione(long id) {
ConcessioneManager manager=ManagerFactory.getByRecordID(id);
try{
System.out.println(manager.getRecord());
}finally {
manager.shutdown();
}
}
}