package gr.upatras.ece.wcl.validation;
import java.util.Iterator;
import gr.upatras.ece.wcl.radl.ConfigurationParam;
import gr.upatras.ece.wcl.radl.RadlPackage;
import gr.upatras.ece.wcl.radl.ResourceAdapter;
import org.eclipse.xtext.validation.Check;
import FederationOffice.Office;
import FederationOffice.services.ServiceSetting;
public class RadlJavaValidator extends AbstractRadlJavaValidator {
public static final String INVALID_CheckResourceAdapterImplements = "INVALID_CheckResourceAdapterImplements";
@Check
public void checkResourceAdapterImplements(ResourceAdapter type) {
System.out.println("checkResourceAdapterImplements");
boolean allExists=true;
String forQFix="";
if (type.getImplname()!=null){
//System.out.println("checkMainRule type.getName()="+type.getImplname().getName() );
FederationOffice.services.OfferedService ofserv = type.getImplname();
for (Iterator<ServiceSetting> iterator = ofserv.getServiceSettings().iterator(); iterator.hasNext();) {
ServiceSetting servsetting = (ServiceSetting) iterator.next();
//System.out.println("servsetting.getName() ="+servsetting.getName() );
if (!checkForImplementedServiceSetting( servsetting.getName(), type )){
allExists = false ;
Office toffice= (Office) type.getImplname().eContainer();
String fullName = toffice.getName() +"." + type.getImplname().getName() +"." +servsetting.getName();
forQFix += "\t\""+servsetting.getName() +"\"" +" implements \""+ fullName +"\";"+
"\n";
}
}
if ( !allExists ) {
error( "Please implement all service settings of "+ type.getImplname().getName(), RadlPackage.RESOURCE_ADAPTER__IMPLNAME , INVALID_CheckResourceAdapterImplements, forQFix );
}
}
}
private boolean checkForImplementedServiceSetting(String srvsettingName, ResourceAdapter type){
for (Iterator<ConfigurationParam> iterator = type.getConfParams().iterator(); iterator.hasNext();) {
ConfigurationParam confParam = (ConfigurationParam) iterator.next();
//System.out.println("checkForImplementedServiceSetting ="+confParam.getName() +" for srvsettingName="+srvsettingName );
if (confParam.getServsetting()!=null)
if ( confParam.getServsetting().getName().equals( srvsettingName ) )
return true;
}
return false;
}
}