/*******************************************************************************
* Copyright (c) 2010 protos software gmbh (http://www.protos.de).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* CONTRIBUTORS:
* Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
*
*******************************************************************************/
package org.eclipse.etrice.core.ui;
import java.util.LinkedList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.etrice.core.validation.RoomJavaValidator;
import org.eclipse.xtext.validation.Check;
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.etrice.core.room.RoomModel;
import org.eclipse.etrice.generator.builder.ILogger;
import org.eclipse.etrice.generator.builder.InstanceModelBuilder;
import org.eclipse.etrice.generator.etricegen.IDiagnostician;
public class RoomModelValidator extends RoomJavaValidator implements ILogger {
private class Diag implements IDiagnostician {
private boolean failed = false;
@Override
public void warning(String msg, EObject source) {
warning(msg, source, -1);
}
@Override
public void warning(String msg, EObject source, int feature) {
issueWarning(msg, source, feature);
}
@Override
public void error(String msg, EObject source) {
error(msg, source, -1);
}
@Override
public void error(String msg, EObject source, int feature) {
failed = true;
issueError(msg, source, feature);
}
@Override
public boolean isFailed() {
return failed;
}
}
@Check
public void checkModel(RoomModel model) {
if (getCheckMode()==CheckMode.ALL) {
System.out.println("checking model "+model.getName());
Diag diagnostician = new Diag();
InstanceModelBuilder builder = new InstanceModelBuilder(this, diagnostician);
LinkedList<RoomModel> models = new LinkedList<RoomModel>();
models.add(model);
builder.createInstanceModel(models);
System.out.println("done checking model "+model.getName()+" with result: "+(diagnostician.isFailed()?"failed":"ok"));
}
}
public void issueError(String msg, EObject source, int feature) {
error(msg, source, feature);
}
public void issueWarning(String msg, EObject source, int feature) {
warning(msg, source, feature);
}
@Override
public void logInfo(String text) {
}
@Override
public void logError(String text, EObject obj) {
}
}