REvisiting code to properly generate group name/id
This commit is contained in:
parent
51c91a3878
commit
503a66596b
|
@ -36,7 +36,6 @@ import org.gcube.datacatalogue.common.Constants;
|
||||||
import org.gcube.datacatalogue.common.enums.Product_Type;
|
import org.gcube.datacatalogue.common.enums.Product_Type;
|
||||||
import org.gcube.datacatalogue.common.enums.Sources;
|
import org.gcube.datacatalogue.common.enums.Sources;
|
||||||
import org.gcube.datacatalogue.common.enums.Status;
|
import org.gcube.datacatalogue.common.enums.Status;
|
||||||
import org.gcube.datacatalogue.common.enums.Stock_Type;
|
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -219,6 +218,36 @@ public class CommonServiceUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void addGroup(Group group, Sources source, String value, Set<String> groups) {
|
||||||
|
String conditionToCheck = group.condition();
|
||||||
|
String groupNameOverValue = group.groupNameOverValue();
|
||||||
|
boolean prependSource = group.prependSourceToGroupName();
|
||||||
|
|
||||||
|
boolean match = conditionToCheck.isEmpty() ? true
|
||||||
|
: value.matches(conditionToCheck);
|
||||||
|
|
||||||
|
if(match) {
|
||||||
|
|
||||||
|
StringBuffer stringBuffer = new StringBuffer();
|
||||||
|
|
||||||
|
if(prependSource) {
|
||||||
|
stringBuffer.append(source.toString().toLowerCase());
|
||||||
|
stringBuffer.append("-");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(groupNameOverValue.isEmpty()) {
|
||||||
|
stringBuffer.append(value);
|
||||||
|
}else {
|
||||||
|
stringBuffer.append(groupNameOverValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
String groupName = HelperMethods.getGroupNameOnCkan(stringBuffer.toString());
|
||||||
|
|
||||||
|
groups.add(groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the list of groups' names for this object
|
* Retrieve the list of groups' names for this object
|
||||||
*/
|
*/
|
||||||
|
@ -226,74 +255,22 @@ public class CommonServiceUtils {
|
||||||
Sources source) {
|
Sources source) {
|
||||||
if(field.isAnnotationPresent(Group.class)) {
|
if(field.isAnnotationPresent(Group.class)) {
|
||||||
Group group = field.getAnnotation(Group.class);
|
Group group = field.getAnnotation(Group.class);
|
||||||
String conditionToCheck = group.condition();
|
|
||||||
String groupNameOverValue = group.groupNameOverValue();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// See https://support.d4science.org/issues/11832
|
|
||||||
boolean assessmentUnit = false;
|
|
||||||
boolean prependSource = group.prependSourceToGroupName();
|
|
||||||
if(record instanceof StockRecord) {
|
|
||||||
StockRecord stockRecord = (StockRecord) record;
|
|
||||||
Stock_Type stock_Type = stockRecord.getType();
|
|
||||||
if(stock_Type != Stock_Type.Assessment_Unit) {
|
|
||||||
prependSource = false;
|
|
||||||
}else {
|
|
||||||
assessmentUnit = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// end patch for https://support.d4science.org/issues/11832
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(record);
|
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(record);
|
||||||
if(f != null) {
|
if(f != null) {
|
||||||
if(f instanceof List<?>) {
|
if(f instanceof List<?>) {
|
||||||
List asList = ((List) f);
|
List asList = ((List) f);
|
||||||
if(!asList.isEmpty()) {
|
if(!asList.isEmpty()) {
|
||||||
|
|
||||||
logger.debug("The object annotated with @Group is a list. Adding ... ");
|
logger.debug("The object annotated with @Group is a list. Adding ... ");
|
||||||
|
// add all the available elements
|
||||||
// else add all the available elements
|
|
||||||
for(int i = 0; i < asList.size(); i++) {
|
for(int i = 0; i < asList.size(); i++) {
|
||||||
boolean match = conditionToCheck.isEmpty() ? true
|
String value = asList.get(i).toString().trim();
|
||||||
: asList.get(i).toString().trim().matches(conditionToCheck);
|
addGroup(group, source, value, groups);
|
||||||
if(match) {
|
|
||||||
String groupName = groupNameOverValue.isEmpty()
|
|
||||||
? HelperMethods.getGroupNameOnCkan(source.toString().toLowerCase() + "-"
|
|
||||||
+ asList.get(i).toString().trim())
|
|
||||||
: source.toString().toLowerCase() + "-" + groupNameOverValue;
|
|
||||||
if(assessmentUnit && !prependSource) {
|
|
||||||
groups.add(groupNameOverValue);
|
|
||||||
}else {
|
|
||||||
groups.add(groupName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
String value = f.toString().trim();
|
||||||
// also convert to the group name that should be on ckan
|
addGroup(group, source, value, groups);
|
||||||
boolean match = conditionToCheck.isEmpty() ? true
|
|
||||||
: f.toString().trim().matches(conditionToCheck);
|
|
||||||
if(match) {
|
|
||||||
|
|
||||||
String groupName = groupNameOverValue.isEmpty()
|
|
||||||
? HelperMethods.getGroupNameOnCkan(
|
|
||||||
source.toString().toLowerCase() + "-" + f.toString().trim())
|
|
||||||
: source.toString().toLowerCase() + "-" + groupNameOverValue;
|
|
||||||
|
|
||||||
if(assessmentUnit && !prependSource) {
|
|
||||||
groups.add(groupNameOverValue);
|
|
||||||
}else {
|
|
||||||
groups.add(groupName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +278,6 @@ public class CommonServiceUtils {
|
||||||
logger.error("Failed to read value for field " + field.getName() + " skipping", e);
|
logger.error("Failed to read value for field " + field.getName() + " skipping", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue