package gr.upatras.ece.wcl.radl2.validation;
import gr.upatras.ece.wcl.radl2.radl.ConfigurationParam;
import gr.upatras.ece.wcl.radl2.radl.RadlPackage;
import gr.upatras.ece.wcl.radl2.radl.ResourceAdapter;
import java.util.Iterator;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.xtext.validation.Check;
import brokermodel.Broker;
import brokermodel.services.ServiceSetting;
public class RadlJavaValidator extends AbstractRadlJavaValidator {
// @Check
// public void checkGreetingStartsWithCapital(Greeting greeting) {
// if (!Character.isUpperCase(greeting.getName().charAt(0))) {
// warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
// }
// }
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() );
brokermodel.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 ;
Broker tBroker= (Broker) type.getImplname().eContainer();
String fullName = tBroker.getName() +"." + type.getImplname().getName() +"." +servsetting.getName();
forQFix += "\t\""+servsetting.getName() +"\"" +" implements \""+ fullName +"\";"+
"\n";
}
}
if ( !allExists ) {
EStructuralFeature feature = RadlPackage.Literals.RESOURCE_ADAPTER.getEStructuralFeature("name");
error( "Please implement all service settings of "+ type.getImplname().getName(), feature , 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;
}
}