You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whn-manager/src/main/java/org/gcube/vremanagement/whnmanager/utils/ValidationUtils.java

102 lines
3.3 KiB
Java

package org.gcube.vremanagement.whnmanager.utils;
import java.util.Iterator;
import org.gcube.common.resources.gcore.Resource;
import org.gcube.common.resources.gcore.ScopeGroup;
public class ValidationUtils {
//private static final Logger log = LoggerFactory.getLogger(ValidationUtils.class);
public static void valid(String name, Object object){
if (object==null)
throw new IllegalArgumentException(name+" is null");
}
public static < R extends Resource > boolean isNotPresent(R resource, String currentScope){
ScopeGroup<String> scopes=resource.scopes();
boolean found= false;
for(Iterator<String> it=scopes.iterator(); it.hasNext();){
String scope=it.next();
if(scope.equals(currentScope))
found=true;
}
if(!found)
return true;
return false;
}
/*
public static <T extends Resource> boolean isTheLastScopeOnResource(T resource, String scope){
if(resource.scopes().size() == 0)
return true;
if(new ScopeBean(scope).is(Type.VRE)){
if(anotherBrotherVREOrVOOnResource(resource, scope)){
return false;
}else return true;
}else if(new ScopeBean(scope).is(Type.VO)){
if(anotherSonVREOnResource(resource, scope)){
throw new IllegalArgumentException("the resource "+resource.id()+" have another scope defined in the same VO. The VO is "+scope);
}else return true;
}else{ // is a INFRA scope
if(anotherInfraScopeOnResource(resource, scope)){
throw new IllegalArgumentException("the resource "+resource.id()+" have another scope defined in the same INFRA. The INFRA is "+scope);
}else return true;
}
}
public static <T extends Resource> boolean anotherBrotherVREOrVOOnResource(T resource, String scope){
if(!new ScopeBean(scope).is(Type.VRE))
throw new IllegalArgumentException("anotherBrotherVREOrVOOnResource method: the input scope must be a VRE scope");
String enclosedScope=new ScopeBean(scope).enclosingScope().toString();
for(String s : resource.scopes()){
if(isChildScope(enclosedScope, s)) return true;
}
return false;
}
public static <T extends Resource> boolean anotherSonVREOnResource(T resource, String scope){
if(!new ScopeBean(scope).is(Type.VO))
throw new IllegalArgumentException("anotherSonVREOnResource method: the input scope must be a VO scope");
for(String s : resource.scopes()){
if(isChildScope(scope, s)) return true;
}
return false;
}
public static boolean isChildScope(String fatherScope, String sonScope) {
ScopeBean currentEnclosedScope=new ScopeBean(sonScope).enclosingScope();
if((currentEnclosedScope != null) && (currentEnclosedScope.toString().equals(fatherScope))){
log.debug("check scope"+fatherScope+": found another son VRE scope "+sonScope);
return true;
}else return false;
}
public static <T extends Resource> boolean anotherInfraScopeOnResource(T resource, String scope){
if(!new ScopeBean(scope).is(Type.INFRASTRUCTURE))
throw new IllegalArgumentException("anotherInfraScopeOnResource method: the input scope must be a INFRASTRUCTURE scope");
String infraScopeFound=null;
for(String s : resource.scopes()){
while(new ScopeBean(s).enclosingScope() != null){
s=new ScopeBean(s).enclosingScope().toString();
}
infraScopeFound=s;
if(infraScopeFound.equals(scope)){
log.debug("check scope"+scope+": found another scope on infra "+s);
return true;
}
}
return false;
}
*/
}