Compare commits
3 Commits
master
...
feature/19
Author | SHA1 | Date |
---|---|---|
Francesco Mangiacrapa | c0c8591d74 | |
Francesco Mangiacrapa | 7f46ffab4d | |
Francesco Mangiacrapa | 211d6980dd |
|
@ -3,7 +3,9 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
org.eclipse.jdt.core.compiler.compliance=1.7
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||||
org.eclipse.jdt.core.compiler.release=disabled
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
org.eclipse.jdt.core.compiler.source=1.7
|
org.eclipse.jdt.core.compiler.source=1.7
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
## [v1.0.0-SNAPSHOT] - 2020-07-07
|
||||||
|
|
||||||
|
#### New Features
|
||||||
|
|
||||||
|
[#19528] Ckan GUI to always allow zenodo publishing
|
||||||
|
|
||||||
|
|
||||||
|
## [v0.0.1] - 2019-12-06
|
||||||
|
|
||||||
|
[#18236] First Release
|
2
pom.xml
2
pom.xml
|
@ -15,7 +15,7 @@
|
||||||
<groupId>org.gcube.portlets.widgets</groupId>
|
<groupId>org.gcube.portlets.widgets</groupId>
|
||||||
<artifactId>ckan2zenodo-publisher-widget</artifactId>
|
<artifactId>ckan2zenodo-publisher-widget</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>0.1.0</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
gCube Ckan2Zenodo Publisher widget allows to publish D4Science catalogue's items on Zenodo
|
gCube Ckan2Zenodo Publisher widget allows to publish D4Science catalogue's items on Zenodo
|
||||||
|
|
|
@ -101,6 +101,25 @@ public class CkanToZendoPublisherWidget {
|
||||||
modal.remove(loader);
|
modal.remove(loader);
|
||||||
manager = new Ckan2ZenodoViewManager();
|
manager = new Ckan2ZenodoViewManager();
|
||||||
basicTabPanel = manager.viewForPublishing(result);
|
basicTabPanel = manager.viewForPublishing(result);
|
||||||
|
//In case of error on translating it shows an alert
|
||||||
|
GWT.log("Translate Error is: "+result.getTranslateError());
|
||||||
|
if(result.getTranslateError()!=null) {
|
||||||
|
Alert alert = new Alert(result.getTranslateError().getError());
|
||||||
|
alert.setClose(true);
|
||||||
|
switch (result.getTranslateError().getErrorType()) {
|
||||||
|
case INFO:
|
||||||
|
alert.setType(AlertType.INFO);
|
||||||
|
break;
|
||||||
|
case WARN:
|
||||||
|
alert.setType(AlertType.WARNING);
|
||||||
|
break;
|
||||||
|
case ERROR:
|
||||||
|
default:
|
||||||
|
alert.setType(AlertType.ERROR);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
modal.add(alert);
|
||||||
|
}
|
||||||
modal.add(basicTabPanel);
|
modal.add(basicTabPanel);
|
||||||
buttonPublish.setEnabled(true);
|
buttonPublish.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
.ckan2zenodo-modal-style {
|
.ckan2zenodo-modal-style {
|
||||||
width: 1200px !important;
|
width: 1200px !important;
|
||||||
margin-left: -600px !important;
|
margin-left: -600px !important;
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ckan2zenodo-modal-style input, textarea {
|
.ckan2zenodo-modal-style input, textarea {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
|
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
|
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.faults.GcatException;
|
import org.gcube.data.publishing.ckan2zenodo.model.faults.GcatException;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.faults.InvalidItemException;
|
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException;
|
import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
|
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
|
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
|
||||||
|
@ -22,6 +21,8 @@ import org.gcube.portlets.widgets.ckan2zenodopublisher.client.CkanToZenodoPublis
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.configuration.ZenodoFieldsDescriptionsReader;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.configuration.ZenodoFieldsDescriptionsReader;
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter.ItemToZenodoConverter;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.server.converter.ItemToZenodoConverter;
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.CatalogueItem;
|
||||||
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.ItemTranslateError;
|
||||||
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.ItemTranslateError.ERROR_TYPE;
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.ZenodoError;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.ZenodoError;
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoFile;
|
||||||
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.wrapped.ZenodoItem;
|
||||||
|
@ -59,7 +60,18 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ZenodoDeposition zenodoDepositionPreview=loadItemPreviewFromService(zenodoItem.getName());
|
Ckan2Zenodo client = new Ckan2ZenodoImpl();
|
||||||
|
// Get the item representation
|
||||||
|
CkanItemDescriptor itemDescr = client.read(zenodoItem.getName());
|
||||||
|
// Get a preview of the deposition to be published
|
||||||
|
ZenodoDeposition zenodoDepositionPreview = null;
|
||||||
|
try {
|
||||||
|
zenodoDepositionPreview = client.translate(itemDescr);
|
||||||
|
} catch (ConfigurationException e) {
|
||||||
|
LOG.info("Using forceTranslation for: " + itemDescr.getItemUrl());
|
||||||
|
zenodoDepositionPreview = client.forceTranslation(itemDescr);
|
||||||
|
}
|
||||||
|
|
||||||
//(EVENTUALLY) UPDATING BASIC INFO CHANGED BY FORM ON CLIENT-SIDE
|
//(EVENTUALLY) UPDATING BASIC INFO CHANGED BY FORM ON CLIENT-SIDE
|
||||||
//Basic info
|
//Basic info
|
||||||
zenodoDepositionPreview.setTitle(zenodoItem.getTitle());
|
zenodoDepositionPreview.setTitle(zenodoItem.getTitle());
|
||||||
|
@ -91,7 +103,7 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
|
||||||
|
|
||||||
//Actually publish to zenodo :
|
//Actually publish to zenodo :
|
||||||
// Step 1 : metadata
|
// Step 1 : metadata
|
||||||
Ckan2Zenodo client= new Ckan2ZenodoImpl();
|
client= new Ckan2ZenodoImpl();
|
||||||
LOG.debug("Calling updatedMetadta for: "+zenodoDepositionPreview);
|
LOG.debug("Calling updatedMetadta for: "+zenodoDepositionPreview);
|
||||||
zenodoDepositionPreview = client.updatedMetadata(zenodoDepositionPreview);
|
zenodoDepositionPreview = client.updatedMetadata(zenodoDepositionPreview);
|
||||||
|
|
||||||
|
@ -150,15 +162,31 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
|
||||||
PortalUtils.getCurrentToken(this.getThreadLocalRequest(), true);
|
PortalUtils.getCurrentToken(this.getThreadLocalRequest(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get a preview of the deposition to be published
|
Ckan2Zenodo client = new Ckan2ZenodoImpl();
|
||||||
ZenodoDeposition zdPreview=loadItemPreviewFromService(item.getItemId());
|
// Get the item representation
|
||||||
|
CkanItemDescriptor itemDescr = client.read(item.getItemId());
|
||||||
|
// Get a preview of the deposition to be published
|
||||||
|
ZenodoDeposition zdDeposition = null;
|
||||||
|
ItemTranslateError itemTrError = null;
|
||||||
|
try {
|
||||||
|
zdDeposition = client.translate(itemDescr);
|
||||||
|
} catch (ConfigurationException e) {
|
||||||
|
LOG.info(ConfigurationException.class.getSimpleName() + " thrown, trying to use forceTranslation for: "
|
||||||
|
+ itemDescr.getName());
|
||||||
|
itemTrError = new ItemTranslateError(e.getMessage(), ERROR_TYPE.INFO);
|
||||||
|
zdDeposition = client.forceTranslation(itemDescr);
|
||||||
|
}
|
||||||
|
|
||||||
//Loading Filtered resources according to VRE policies
|
//Loading Filtered resources according to VRE policies
|
||||||
List<CkanResource> filteredResources = loadFilterResources(item.getItemId());
|
List<CkanResource> filteredResources = loadFilterResources(item.getItemId());
|
||||||
|
|
||||||
LOG.debug("Loaded filtered resources: "+filteredResources);
|
LOG.debug("Loaded filtered resources: "+filteredResources);
|
||||||
|
|
||||||
//Converting ZenodoDeposition to ZenodoItem
|
//Converting ZenodoDeposition to ZenodoItem
|
||||||
ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdPreview);
|
ZenodoItem zenodoItem = ItemToZenodoConverter.toZenodoItem(zdDeposition);
|
||||||
|
|
||||||
|
//Adding ItemTranslateError eventually occurred by calling client.translate
|
||||||
|
zenodoItem.setTranslateError(itemTrError);
|
||||||
|
|
||||||
//Adding the filtered resources
|
//Adding the filtered resources
|
||||||
List<ZenodoFile> resources = ItemToZenodoConverter.toZenodoFiles(filteredResources, false);
|
List<ZenodoFile> resources = ItemToZenodoConverter.toZenodoFiles(filteredResources, false);
|
||||||
|
@ -214,29 +242,6 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load item preview from service.
|
|
||||||
*
|
|
||||||
* @param itemName the item name
|
|
||||||
* @return the zenodo deposition
|
|
||||||
* @throws GcatException the gcat exception
|
|
||||||
* @throws InvalidItemException the invalid item exception
|
|
||||||
* @throws ZenodoException the zenodo exception
|
|
||||||
* @throws ConfigurationException the configuration exception
|
|
||||||
* @throws TransformationException the transformation exception
|
|
||||||
*/
|
|
||||||
private ZenodoDeposition loadItemPreviewFromService(String itemName) throws GcatException, InvalidItemException, ZenodoException, ConfigurationException, TransformationException {
|
|
||||||
|
|
||||||
Ckan2Zenodo client= new Ckan2ZenodoImpl();
|
|
||||||
// Get the item representation
|
|
||||||
CkanItemDescriptor itemDescr=client.read(itemName);
|
|
||||||
//Get a preview of the deposition to be published
|
|
||||||
return client.translate(itemDescr);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load filter resources.
|
* Load filter resources.
|
||||||
*
|
*
|
||||||
|
@ -248,7 +253,7 @@ public class CkanToZenodoPublisherServiceImpl extends RemoteServiceServlet imple
|
||||||
*/
|
*/
|
||||||
private List<CkanResource> loadFilterResources(String itemName) throws GcatException, ConfigurationException, TransformationException {
|
private List<CkanResource> loadFilterResources(String itemName) throws GcatException, ConfigurationException, TransformationException {
|
||||||
|
|
||||||
Ckan2Zenodo client= new Ckan2ZenodoImpl();
|
Ckan2Zenodo client = new Ckan2ZenodoImpl();
|
||||||
// Get the item representation
|
// Get the item representation
|
||||||
CkanItemDescriptor itemDescr=client.read(itemName);
|
CkanItemDescriptor itemDescr=client.read(itemName);
|
||||||
//Filter resources according to VRE policies
|
//Filter resources according to VRE policies
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
package org.gcube.portlets.widgets.ckan2zenodopublisher.shared;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ItemTranslateError.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy)
|
||||||
|
* Jul 6, 2020
|
||||||
|
*/
|
||||||
|
public class ItemTranslateError implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 6350511079411561892L;
|
||||||
|
|
||||||
|
private String error;
|
||||||
|
|
||||||
|
private ERROR_TYPE errorType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum ERROR_TYPE.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy)
|
||||||
|
* Jul 6, 2020
|
||||||
|
*/
|
||||||
|
public static enum ERROR_TYPE {
|
||||||
|
INFO, WARN, ERROR
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new zenodo translate error.
|
||||||
|
*/
|
||||||
|
ItemTranslateError() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new zenodo translate error.
|
||||||
|
*
|
||||||
|
* @param error the error
|
||||||
|
* @param errorType the error type
|
||||||
|
*/
|
||||||
|
public ItemTranslateError(String error, ERROR_TYPE errorType) {
|
||||||
|
super();
|
||||||
|
this.error = error;
|
||||||
|
this.errorType = errorType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getError() {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setError(String error) {
|
||||||
|
this.error = error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ERROR_TYPE getErrorType() {
|
||||||
|
if(error==null)
|
||||||
|
return ERROR_TYPE.ERROR;
|
||||||
|
|
||||||
|
return errorType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorType(ERROR_TYPE errorType) {
|
||||||
|
this.errorType = errorType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ItemTranslateError [error=" + error + ", errorType=" + errorType + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -5,19 +5,20 @@ import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.widgets.ckan2zenodopublisher.shared.ItemTranslateError;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class ZenodoItem.
|
* The Class ZenodoItem.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
* @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy)
|
||||||
*
|
* Jul 6, 2020
|
||||||
* Dec 9, 2019
|
|
||||||
*/
|
*/
|
||||||
public class ZenodoItem implements Serializable {
|
public class ZenodoItem implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -3623554371253293861L;
|
private static final long serialVersionUID = 4007154127458109015L;
|
||||||
|
|
||||||
private Date created;
|
private Date created;
|
||||||
private String doi;
|
private String doi;
|
||||||
|
@ -31,7 +32,9 @@ public class ZenodoItem implements Serializable {
|
||||||
private String state;
|
private String state;
|
||||||
private Boolean submitted;
|
private Boolean submitted;
|
||||||
private String title;
|
private String title;
|
||||||
private String name; //this is the dataset name
|
private String name; // this is the dataset name
|
||||||
|
|
||||||
|
private ItemTranslateError translateError;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new zenodo item.
|
* Instantiates a new zenodo item.
|
||||||
|
@ -64,14 +67,13 @@ public class ZenodoItem implements Serializable {
|
||||||
*/
|
*/
|
||||||
public void addFiles(List<ZenodoFile> files) {
|
public void addFiles(List<ZenodoFile> files) {
|
||||||
|
|
||||||
if(this.files==null) {
|
if (this.files == null) {
|
||||||
this.files = files;
|
this.files = files;
|
||||||
}else {
|
} else {
|
||||||
this.files.addAll(files);
|
this.files.addAll(files);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the files.
|
* Sets the files.
|
||||||
*
|
*
|
||||||
|
@ -80,7 +82,7 @@ public class ZenodoItem implements Serializable {
|
||||||
public void setFiles(List<ZenodoFile> files) {
|
public void setFiles(List<ZenodoFile> files) {
|
||||||
|
|
||||||
this.files = new ArrayList<ZenodoFile>();
|
this.files = new ArrayList<ZenodoFile>();
|
||||||
if(files!=null) {
|
if (files != null) {
|
||||||
this.files.addAll(files);
|
this.files.addAll(files);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,42 +294,32 @@ public class ZenodoItem implements Serializable {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/* (non-Javadoc)
|
* Gets the translate error.
|
||||||
* @see java.lang.Object#toString()
|
*
|
||||||
|
* @return the translate error
|
||||||
*/
|
*/
|
||||||
|
public ItemTranslateError getTranslateError() {
|
||||||
|
return translateError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the translate error.
|
||||||
|
*
|
||||||
|
* @param translateError the new translate error
|
||||||
|
*/
|
||||||
|
public void setTranslateError(ItemTranslateError translateError) {
|
||||||
|
this.translateError = translateError;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
return "ZenodoItem [created=" + created + ", doi=" + doi + ", files=" + files + ", id=" + id + ", metadata="
|
||||||
builder.append("ZenodoItem [created=");
|
+ metadata + ", modified=" + modified + ", owner=" + owner + ", record_id=" + record_id
|
||||||
builder.append(created);
|
+ ", record_url=" + record_url + ", state=" + state + ", submitted=" + submitted + ", title=" + title
|
||||||
builder.append(", doi=");
|
+ ", name=" + name + ", translateError=" + translateError + "]";
|
||||||
builder.append(doi);
|
|
||||||
builder.append(", files=");
|
|
||||||
builder.append(files);
|
|
||||||
builder.append(", id=");
|
|
||||||
builder.append(id);
|
|
||||||
builder.append(", metadata=");
|
|
||||||
builder.append(metadata);
|
|
||||||
builder.append(", modified=");
|
|
||||||
builder.append(modified);
|
|
||||||
builder.append(", owner=");
|
|
||||||
builder.append(owner);
|
|
||||||
builder.append(", record_id=");
|
|
||||||
builder.append(record_id);
|
|
||||||
builder.append(", record_url=");
|
|
||||||
builder.append(record_url);
|
|
||||||
builder.append(", state=");
|
|
||||||
builder.append(state);
|
|
||||||
builder.append(", submitted=");
|
|
||||||
builder.append(submitted);
|
|
||||||
builder.append(", title=");
|
|
||||||
builder.append(title);
|
|
||||||
builder.append(", name=");
|
|
||||||
builder.append(name);
|
|
||||||
builder.append("]");
|
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue