sdi-service/src/main/java/org/gcube/spatial/data/sdi/engine/impl/metadata/templates/AbstractMetadataTemplate.java

50 lines
1.5 KiB
Java

package org.gcube.spatial.data.sdi.engine.impl.metadata.templates;
import java.util.List;
import org.gcube.spatial.data.sdi.engine.impl.metadata.MetadataHandler;
import org.gcube.spatial.data.sdi.engine.impl.metadata.MetadataUtils.Position;
import org.gcube.spatial.data.sdi.model.ParameterType;
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
import org.gcube.spatial.data.sdi.model.metadata.TemplateInvocation;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@AllArgsConstructor
public abstract class AbstractMetadataTemplate<T> {
@Getter
@Setter
@ToString
@AllArgsConstructor
public static class InsertionPoint{
private Position position;
private String elementReference;
}
private String fileName;
private InsertionPoint insertionPoint;
private TemplateDescriptor descriptor;
public abstract T getInstantiationRequest(MetadataHandler original, TemplateInvocation invocation) throws InvalidTemplateInvocationException,Exception;
protected String getParameter(String parameterName, List<ParameterType> parameters, boolean mandatory,String defaultValue)throws InvalidTemplateInvocationException{
//if collection not empty look for it
if(!(parameters==null || parameters.isEmpty()))
for(ParameterType param:parameters)
if(param.getName().equals(parameterName)) return param.getValue();
//nothing found..
if(mandatory) throw new InvalidTemplateInvocationException("Missing parameter "+parameterName+".");
else return defaultValue;
}
}