ckan-content-moderator-widget/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/util/ModerationQueryStringUtil.java

210 lines
4.9 KiB
Java

package org.gcube.portlets.widgets.ckancontentmoderator.client.util;
import java.util.Arrays;
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
import org.gcube.portlets.widgets.ckancontentmoderator.shared.DISPLAY_FIELD;
import com.google.gwt.core.client.GWT;
/**
* The Class ModerationQueryStringUtil.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* May 4, 2022
*/
public class ModerationQueryStringUtil {
public static final String MODERATION_PARAMETER = "moderation";
public static final String ITEM_NAME_PARAMETER = "item_name";
public static final String STATUS_PARAMETER = "status";
/**
* The Enum MODERATION_VALUE.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* May 4, 2022
*/
public enum MODERATION_VALUE {
show
}
/**
* Instantiates a new moderation query string util.
*/
public ModerationQueryStringUtil() {
}
/**
* To moderation builder.
*
* @param decodedQueryString the decoded query string
* @return the moderation builder
*/
public ModerationBuilder toModerationBuilder(String decodedQueryString) {
ModerationBuilder mbuilder = null;
if (decodedQueryString == null || decodedQueryString.isEmpty())
return null;
String moderationValue = QueryStringUtil.getValueOfParameterInTheURL(MODERATION_PARAMETER, decodedQueryString);
MODERATION_VALUE toModerationValue = null;
// Moderation parameter in the query string has a not empty value
if (moderationValue != null) {
try {
toModerationValue = MODERATION_VALUE.valueOf(moderationValue.toLowerCase());
} catch (Exception e) {
GWT.log("Moderation value: " + moderationValue + " is not a value of " + MODERATION_VALUE.values());
}
}
if (toModerationValue != null) {
mbuilder = new ModerationBuilder();
String itemNameValue = QueryStringUtil.getValueOfParameterInTheURL(ITEM_NAME_PARAMETER, decodedQueryString);
if (itemNameValue != null) {
mbuilder.setItemName(itemNameValue);
}
String statusValue = QueryStringUtil.getValueOfParameterInTheURL(STATUS_PARAMETER, decodedQueryString);
if (statusValue != null) {
try {
ItemStatus theStatus = ItemStatus.valueOf(statusValue.toUpperCase());
mbuilder.setItemStatus(theStatus);
} catch (Exception e) {
GWT.log("Error on assigning "+ItemStatus.values() +" from string "+statusValue);
}
}
}
return mbuilder;
}
/**
* The Class ModerationBuilder.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* May 4, 2022
*/
public class ModerationBuilder {
private ItemStatus itemStatus = ItemStatus.PENDING;
private String itemName = null;
private DISPLAY_FIELD[] displayFields = DISPLAY_FIELD.values();
private DISPLAY_FIELD[] sortByFields = ContentModeratorWidgetConstants.DEFAULT_SORT_BY_FIELDS;
/**
* Instantiates a new moderation builder.
*/
ModerationBuilder() {
}
/**
* Gets the item name.
*
* @return the item name
*/
public String getItemName() {
return itemName;
}
/**
* Sets the item name.
*
* @param itemName the new item name
*/
public void setItemName(String itemName) {
this.itemName = itemName;
}
/**
* Gets the item status.
*
* @return the item status
*/
public ItemStatus getItemStatus() {
return itemStatus;
}
/**
* Gets the display fields.
*
* @return the display fields
*/
public DISPLAY_FIELD[] getDisplayFields() {
return displayFields;
}
/**
* Gets the sort by fields.
*
* @return the sort by fields
*/
public DISPLAY_FIELD[] getSortByFields() {
return sortByFields;
}
/**
* Sets the item status.
*
* @param itemStatus the new item status
*/
public void setItemStatus(ItemStatus itemStatus) {
this.itemStatus = itemStatus;
}
/**
* Sets the display fields.
*
* @param displayFields the new display fields
*/
public void setDisplayFields(DISPLAY_FIELD[] displayFields) {
this.displayFields = displayFields;
}
/**
* Sets the sort by fields.
*
* @param sortByFields the new sort by fields
*/
public void setSortByFields(DISPLAY_FIELD[] sortByFields) {
this.sortByFields = sortByFields;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ModerationBuilder [itemStatus=");
builder.append(itemStatus);
builder.append(", itemName=");
builder.append(itemName);
builder.append(", displayFields=");
builder.append(Arrays.toString(displayFields));
builder.append(", sortByFields=");
builder.append(Arrays.toString(sortByFields));
builder.append("]");
return builder.toString();
}
}
/**
* Base 64 decode.
*
* @param a the a
* @return the string
*/
protected static native String base64decode(String a) /*-{
return window.atob(a);
}-*/;
}