task_20210 #1
|
@ -1,12 +1,12 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/geoportal-data-entry-app-1.0.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/geoportal-data-entry-app-1.0.2-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry excluding="**" kind="src" output="target/geoportal-data-entry-app-1.0.1-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
<classpathentry excluding="**" kind="src" output="target/geoportal-data-entry-app-1.0.2-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
|
@ -35,5 +35,5 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/geoportal-data-entry-app-1.0.1-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/geoportal-data-entry-app-1.0.2-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
jarsExcludedFromWebInfLib=
|
jarsExcludedFromWebInfLib=
|
||||||
lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-1.0.1-SNAPSHOT
|
lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-1.0.2-SNAPSHOT
|
||||||
warSrcDir=src/main/webapp
|
warSrcDir=src/main/webapp
|
||||||
warSrcDirIsOutput=false
|
warSrcDirIsOutput=false
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||||
<dependent-module archiveName="metadata-profile-form-builder-widget-1.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/metadata-profile-form-builder-widget/metadata-profile-form-builder-widget">
|
|
||||||
<dependency-type>uses</dependency-type>
|
|
||||||
</dependent-module>
|
|
||||||
<property name="context-root" value="geoportal-data-entry-app"/>
|
<property name="context-root" value="geoportal-data-entry-app"/>
|
||||||
<property name="java-output-path" value="/geoportal-data-entry-app/target/geoportal-data-entry-app-1.0.0-SNAPSHOT/WEB-INF/classes"/>
|
<property name="java-output-path" value="/geoportal-data-entry-app/target/geoportal-data-entry-app-1.0.0-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</wb-module>
|
</wb-module>
|
||||||
|
|
|
@ -4,6 +4,13 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [v1.0.3-SNAPSHOT] - 2020-11-30
|
||||||
|
|
||||||
|
#### Enhancements
|
||||||
|
|
||||||
|
[#20210] Updating required for data entry facility after the first feedback by domain experts
|
||||||
|
|
||||||
|
|
||||||
## [v1.0.2-SNAPSHOT] - 2020-11-09
|
## [v1.0.2-SNAPSHOT] - 2020-11-09
|
||||||
|
|
||||||
#### Bug fixes
|
#### Bug fixes
|
||||||
|
|
25
pom.xml
25
pom.xml
|
@ -14,7 +14,7 @@
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>geoportal-data-entry-app</artifactId>
|
<artifactId>geoportal-data-entry-app</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<version>1.0.2-SNAPSHOT</version>
|
<version>1.0.3-SNAPSHOT</version>
|
||||||
<name>GeoPortal Data Entry App</name>
|
<name>GeoPortal Data Entry App</name>
|
||||||
<description>The GeoPortal Data Entry App is an application to build the web forms for data entries needed to GeoNa project</description>
|
<description>The GeoPortal Data Entry App is an application to build the web forms for data entries needed to GeoNa project</description>
|
||||||
<scm>
|
<scm>
|
||||||
|
@ -115,15 +115,32 @@
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- END FWS -->
|
<!-- END FWS -->
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>org.gcube.application</groupId> -->
|
||||||
|
<!-- <artifactId>geoportal-logic</artifactId> -->
|
||||||
|
<!-- <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> -->
|
||||||
|
<!-- <scope>compile</scope> -->
|
||||||
|
<!-- <exclusions> -->
|
||||||
|
<!-- <exclusion> -->
|
||||||
|
<!-- <groupId>javax.servlet</groupId> -->
|
||||||
|
<!-- <artifactId>servlet-api</artifactId> -->
|
||||||
|
<!-- </exclusion> -->
|
||||||
|
<!-- </exclusions> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.application</groupId>
|
<groupId>org.gcube.application</groupId>
|
||||||
<artifactId>geoportal-logic</artifactId>
|
<artifactId>geoportal-client</artifactId>
|
||||||
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>org.gcube.resources.discovery</groupId>
|
||||||
<artifactId>servlet-api</artifactId>
|
<artifactId>ic-client</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.gcube.resources.discovery</groupId>
|
||||||
|
<artifactId>discovery-client</artifactId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
|
@ -8,11 +8,11 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.model.AccessPolicy;
|
import org.gcube.application.geoportal.common.model.legacy.AccessPolicy;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
|
import org.gcube.application.geoportal.common.model.legacy.LayerConcessione;
|
||||||
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
|
import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo;
|
||||||
import org.gcube.application.geoportal.model.content.UploadedImage;
|
import org.gcube.application.geoportal.common.model.legacy.UploadedImage;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp;
|
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp;
|
||||||
import org.gcube.portlets.widgets.mpformbuilder.shared.GenericDatasetBean;
|
import org.gcube.portlets.widgets.mpformbuilder.shared.GenericDatasetBean;
|
||||||
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
||||||
|
@ -140,13 +140,13 @@ public class ConvertToServiceModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> titolareCopyrightLst = mapFields.get("Titolare Copyright");
|
List<String> titolareCopyrightLst = mapFields.get("Titolare Copyright");
|
||||||
if(titolareCopyrightLst!=null && titolareCopyrightLst.size()>0){
|
if(titolareCopyrightLst!=null){
|
||||||
concessione.setTitolareCopyright(titolareCopyrightLst.get(0));
|
concessione.setTitolareCopyright(titolareCopyrightLst);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> titolareLicenzaLst = mapFields.get("Titolare Licenza");
|
List<String> titolareLicenzaLst = mapFields.get("Titolare Licenza");
|
||||||
if(titolareLicenzaLst!=null && titolareLicenzaLst.size()>0){
|
if(titolareLicenzaLst!=null){
|
||||||
concessione.setTitolareLicenza(titolareLicenzaLst.get(0));
|
concessione.setTitolareLicenza(titolareLicenzaLst);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> titolareDatiLst = mapFields.get("Titolare dei dati");
|
List<String> titolareDatiLst = mapFields.get("Titolare dei dati");
|
||||||
|
|
|
@ -6,17 +6,15 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.managers.ConcessioneManager;
|
import javax.validation.ValidationException;
|
||||||
import org.gcube.application.geoportal.managers.ManagerFactory;
|
|
||||||
import org.gcube.application.geoportal.model.InputStreamDescriptor;
|
import org.gcube.application.geoportal.client.legacy.ConcessioniManager;
|
||||||
import org.gcube.application.geoportal.model.concessioni.Concessione;
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
||||||
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
|
import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor;
|
||||||
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
|
import org.gcube.application.geoportal.common.model.legacy.LayerConcessione;
|
||||||
import org.gcube.application.geoportal.model.content.UploadedImage;
|
import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo;
|
||||||
import org.gcube.application.geoportal.model.content.WorkspaceContent;
|
import org.gcube.application.geoportal.common.model.legacy.UploadedImage;
|
||||||
import org.gcube.application.geoportal.model.fault.PublishException;
|
import org.gcube.application.geoportal.common.model.legacy.report.PublicationReport;
|
||||||
import org.gcube.application.geoportal.model.fault.ValidationException;
|
|
||||||
import org.gcube.application.geoportal.utils.Serialization;
|
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ConcessioniFormCardTitle;
|
import org.gcube.portlets.user.geoportaldataentry.client.ConcessioniFormCardTitle;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryService;
|
import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryService;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||||
|
@ -66,7 +64,9 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
|
|
||||||
GCubeUser user = SessionUtil.getCurrentUser(this.getThreadLocalRequest());
|
GCubeUser user = SessionUtil.getCurrentUser(this.getThreadLocalRequest());
|
||||||
|
|
||||||
ConcessioneManager manager;
|
ConcessioniManager manager = new ConcessioniManager();
|
||||||
|
Concessione concessione = null;
|
||||||
|
boolean registered = false;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
//Saving Data
|
//Saving Data
|
||||||
|
@ -79,11 +79,12 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
GenericDatasetBean idp = listGDB.get(0);
|
GenericDatasetBean idp = listGDB.get(0);
|
||||||
LOG.debug("\n\n");
|
LOG.debug("\n\n");
|
||||||
LOG.debug(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO+" building with client obj: "+idp);
|
LOG.debug(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO+" building with client obj: "+idp);
|
||||||
Concessione concessione = ConvertToServiceModel.toConcessione(idp, user);
|
concessione = ConvertToServiceModel.toConcessione(idp, user);
|
||||||
LOG.debug("Built "+ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO+" as server obj: "+concessione);
|
LOG.debug("Built "+ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO+" as server obj: "+concessione);
|
||||||
|
|
||||||
//saving into back-end
|
//saving into back-end
|
||||||
manager = ManagerFactory.registerNew(concessione);
|
concessione = manager.registerNew(concessione);
|
||||||
|
registered = true;
|
||||||
|
|
||||||
//RELAZIONE_DI_SCAVO
|
//RELAZIONE_DI_SCAVO
|
||||||
list = toMap.get(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO);
|
list = toMap.get(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO);
|
||||||
|
@ -160,7 +161,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
FileInputStream fis = new FileInputStream(fileUploaded.getTempSystemPath());
|
FileInputStream fis = new FileInputStream(fileUploaded.getTempSystemPath());
|
||||||
InputStreamDescriptor isd = new InputStreamDescriptor(fis, fileUploaded.getFileName());
|
InputStreamDescriptor isd = new InputStreamDescriptor(fis, fileUploaded.getFileName());
|
||||||
//saving into back-end
|
//saving into back-end
|
||||||
manager.addPiantaFineScavo(layerPfs, isd);
|
manager.addPiantaScavo(layerPfs, isd);
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
LOG.error("Error on converting form data: ",e);
|
LOG.error("Error on converting form data: ",e);
|
||||||
|
@ -169,36 +170,31 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
//If true -> data are published into the SDI
|
|
||||||
Boolean publish=true;
|
|
||||||
Concessione registered=manager.commit(publish);
|
|
||||||
LOG.info("Registered: "+registered);
|
|
||||||
String link = null;
|
|
||||||
try {
|
|
||||||
link = ((WorkspaceContent)registered.getRelazioneScavo().getActualContent().get(0)).getLink();
|
|
||||||
}catch (Exception e) {
|
|
||||||
LOG.warn("Not able to check public link ",e);
|
|
||||||
}
|
|
||||||
|
|
||||||
//String link = "toTest";
|
CommitReport cRep = null;
|
||||||
CommitReport cRep = new CommitReport();
|
|
||||||
cRep.setRecordId(registered.getId());
|
if(registered) {
|
||||||
if(link!=null) {
|
PublicationReport report = manager.commitRegistered();
|
||||||
cRep.setState(STATE.OK);
|
LOG.info("Registered: "+report);
|
||||||
cRep.setMsg("Project saved successfully");
|
|
||||||
}
|
cRep = new CommitReport();
|
||||||
else {
|
cRep.setRecordId(report.getTheRecord().getId());
|
||||||
cRep.setState(STATE.WARN);
|
cRep.setReport(report.toString());
|
||||||
cRep.setMsg("Project saved with errors");
|
if(report.getTheRecord()!=null ) {
|
||||||
}
|
cRep.setState(STATE.OK);
|
||||||
|
cRep.setMsg("Project saved successfully");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cRep.setState(STATE.ERROR);
|
||||||
|
cRep.setMsg("Project not saved correctly");
|
||||||
|
}
|
||||||
|
}else
|
||||||
|
throw new Exception("Sorry, the record has not been registred correclty. Try again");
|
||||||
|
|
||||||
return cRep;
|
return cRep;
|
||||||
}catch (ValidationException e1){
|
}catch (ValidationException e1){
|
||||||
LOG.error("Error on validating data: ",e1);
|
LOG.error("Error on validating data: ",e1);
|
||||||
throw new Exception("Error on validating data: "+Serialization.prettyPrint(e1.getReport()));
|
throw new Exception("Error on validating data: ", e1);
|
||||||
}catch (PublishException e2) {
|
|
||||||
LOG.error("Error on publishing data: ",e2);
|
|
||||||
throw new Exception("Error on publishing data: "+e2.getMessage());
|
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
LOG.error("Error on commiting data: ",e);
|
LOG.error("Error on commiting data: ",e);
|
||||||
throw new Exception("Error occurred on saving data, try again or contact the support. Error: "+e.getMessage());
|
throw new Exception("Error occurred on saving data, try again or contact the support. Error: "+e.getMessage());
|
||||||
|
|
|
@ -8,53 +8,54 @@ import java.io.Serializable;
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||||
*
|
*
|
||||||
* Oct 21, 2020
|
* Nov 30, 2020
|
||||||
*/
|
*/
|
||||||
public class CommitReport implements Serializable{
|
public class CommitReport implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -9519707669761939L;
|
private static final long serialVersionUID = -9519707669761939L;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Enum STATE.
|
* The Enum STATE.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||||
*
|
*
|
||||||
* Oct 21, 2020
|
* Oct 21, 2020
|
||||||
*/
|
*/
|
||||||
public enum STATE{ERROR, WARN, OK, UNKNOWN}
|
public enum STATE {
|
||||||
|
ERROR, WARN, OK, UNKNOWN
|
||||||
|
}
|
||||||
|
|
||||||
public STATE state = STATE.UNKNOWN;
|
public STATE state = STATE.UNKNOWN;
|
||||||
public long recordId;
|
public long recordId;
|
||||||
public String msg;
|
public String msg;
|
||||||
|
public String report;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new commit report.
|
* Instantiates a new commit report.
|
||||||
*/
|
*/
|
||||||
public CommitReport() {
|
public CommitReport() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new commit report.
|
* Instantiates a new commit report.
|
||||||
*
|
*
|
||||||
* @param state the state
|
* @param state the state
|
||||||
* @param recordId the record id
|
* @param recordId the record id
|
||||||
* @param msg the msg
|
* @param msg the msg
|
||||||
|
* @param report the report
|
||||||
*/
|
*/
|
||||||
public CommitReport(STATE state, long recordId, String msg) {
|
public CommitReport(STATE state, long recordId, String msg, String report) {
|
||||||
super();
|
super();
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.recordId = recordId;
|
this.recordId = recordId;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
|
this.report = report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the state.
|
* Gets the state.
|
||||||
*
|
*
|
||||||
|
@ -82,6 +83,24 @@ public class CommitReport implements Serializable{
|
||||||
return recordId;
|
return recordId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the report.
|
||||||
|
*
|
||||||
|
* @return the report
|
||||||
|
*/
|
||||||
|
public String getReport() {
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the report.
|
||||||
|
*
|
||||||
|
* @param report the new report
|
||||||
|
*/
|
||||||
|
public void setReport(String report) {
|
||||||
|
this.report = report;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the record id.
|
* Sets the record id.
|
||||||
*
|
*
|
||||||
|
@ -109,10 +128,10 @@ public class CommitReport implements Serializable{
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To string.
|
||||||
/* (non-Javadoc)
|
*
|
||||||
* @see java.lang.Object#toString()
|
* @return the string
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
@ -123,8 +142,11 @@ public class CommitReport implements Serializable{
|
||||||
builder.append(recordId);
|
builder.append(recordId);
|
||||||
builder.append(", msg=");
|
builder.append(", msg=");
|
||||||
builder.append(msg);
|
builder.append(msg);
|
||||||
|
builder.append(", report=");
|
||||||
|
builder.append(report);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue