use of org.vcell.util.Issue in project vcell by virtualcell.
the class Model method gatherIssues.
/**
* Insert the method's description here.
* Creation date: (5/12/2004 10:38:12 PM)
* @param issueList java.util.Vector
*/
public void gatherIssues(IssueContext issueContext, List<Issue> issueList) {
issueContext = issueContext.newChildContext(ContextType.Model, this);
//
try {
for (ModelParameter modelParameter : fieldModelParameters) {
Expression exp = modelParameter.getExpression();
String[] symbols = exp.getSymbols();
if (symbols != null) {
String issueMsgPrefix = "Global parameter '" + modelParameter.getName() + "' ";
for (int j = 0; j < symbols.length; j++) {
SymbolTableEntry ste = exp.getSymbolBinding(symbols[j]);
if (ste == null) {
issueList.add(new Issue(modelParameter, issueContext, IssueCategory.ModelParameterExpressionError, issueMsgPrefix + "references undefined symbol '" + symbols[j] + "'", Issue.SEVERITY_ERROR));
} else if (ste instanceof SpeciesContext) {
if (!contains((SpeciesContext) ste)) {
issueList.add(new Issue(modelParameter, issueContext, IssueCategory.ModelParameterExpressionError, issueMsgPrefix + "references undefined species '" + symbols[j] + "'", Issue.SEVERITY_ERROR));
}
} else if (ste instanceof ModelParameter) {
if (!contains((ModelParameter) ste)) {
issueList.add(new Issue(modelParameter, issueContext, IssueCategory.ModelParameterExpressionError, issueMsgPrefix + "references undefined global parameter '" + symbols[j] + "'", Issue.SEVERITY_ERROR));
}
}
}
}
}
//
for (int i = 0; i < fieldModelParameters.length; i++) {
try {
VCUnitEvaluator unitEvaluator = new VCUnitEvaluator(getUnitSystem());
VCUnitDefinition paramUnitDef = fieldModelParameters[i].getUnitDefinition();
VCUnitDefinition expUnitDef = unitEvaluator.getUnitDefinition(fieldModelParameters[i].getExpression());
if (paramUnitDef == null) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "defined unit is null", Issue.SEVERITY_WARNING));
} else if (expUnitDef == null) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "computed unit is null", Issue.SEVERITY_WARNING));
} else if (paramUnitDef.isTBD()) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "unit is undefined (" + unitSystem.getInstance_TBD().getSymbol() + ")", Issue.SEVERITY_WARNING));
} else if (!paramUnitDef.isEquivalent(expUnitDef) && !expUnitDef.isTBD()) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "unit mismatch, computed = [" + expUnitDef.getSymbol() + "]", Issue.SEVERITY_WARNING));
}
} catch (VCUnitException e) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "units inconsistent: " + e.getMessage(), Issue.SEVERITY_WARNING));
} catch (ExpressionException e) {
issueList.add(new Issue(fieldModelParameters[i], issueContext, IssueCategory.Units, "units inconsistent: " + e.getMessage(), Issue.SEVERITY_WARNING));
}
}
} catch (Throwable e) {
e.printStackTrace(System.out);
issueList.add(new Issue(this, issueContext, IssueCategory.Units, "unexpected exception: " + e.getMessage(), Issue.SEVERITY_WARNING));
}
//
for (Structure struct : fieldStructures) {
struct.gatherIssues(issueContext, issueList);
}
//
for (int i = 0; i < fieldReactionSteps.length; i++) {
fieldReactionSteps[i].gatherIssues(issueContext, issueList);
}
//
// get issues from species contexts (species patterns)
//
int seedSpeciesCount = 0;
for (int i = 0; i < fieldSpeciesContexts.length; i++) {
if (fieldSpeciesContexts[i].hasSpeciesPattern()) {
seedSpeciesCount++;
}
fieldSpeciesContexts[i].gatherIssues(issueContext, issueList);
}
if (seedSpeciesCount == 0 && !rbmModelContainer.getReactionRuleList().isEmpty()) {
String msg = "At least one seed species is required.";
issueList.add(new Issue(this, issueContext, IssueCategory.Identifiers, msg, Issue.Severity.WARNING));
}
//
// get issues for symbol name clashes (specifically structures with same voltage names or structure names)
//
HashSet<SymbolTableEntry> steHashSet = new HashSet<SymbolTableEntry>();
gatherLocalEntries(steHashSet);
Iterator<SymbolTableEntry> iter = steHashSet.iterator();
Hashtable<String, SymbolTableEntry> symbolHashtable = new Hashtable<String, SymbolTableEntry>();
while (iter.hasNext()) {
SymbolTableEntry ste = iter.next();
SymbolTableEntry existingSTE = symbolHashtable.get(ste.getName());
if (existingSTE != null) {
issueList.add(new Issue(this, issueContext, IssueCategory.Identifiers, "model symbol \"" + ste.getName() + "\" is used within \"" + ste.getNameScope().getName() + "\" and \"" + existingSTE.getNameScope().getName() + "\"", Issue.SEVERITY_ERROR));
} else {
symbolHashtable.put(ste.getName(), ste);
}
}
//
// gather issues for electrical topology (unspecified +ve or -ve features, or +ve feature == -ve feature
//
getElectricalTopology().gatherIssues(issueContext, issueList);
//
if (rbmModelContainer == null) {
issueList.add(new Issue(this, issueContext, IssueCategory.InternalError, "Rbm Model Container is null", Issue.SEVERITY_WARNING));
} else {
rbmModelContainer.gatherIssues(issueContext, issueList);
}
}
use of org.vcell.util.Issue in project vcell by virtualcell.
the class MathDescription method gatherIssues.
/**
* This method was created in VisualAge.
* @return boolean
*/
public void gatherIssues(IssueContext issueContext, List<Issue> issueList) {
issueContext = issueContext.newChildContext(ContextType.MathDescription, this);
setWarning(null);
if (geometry == null) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_NoGeometry, VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_1, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (isSpatialStoch() && geometry.getDimension() != 3) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.Smoldyn_Geometry_3DWarning, "VCell spatial stochastic models only support 3D geometry.", Issue.SEVERITY_ERROR);
issueList.add(issue);
}
// check Constant are really constants
for (int i = 0; i < variableList.size(); i++) {
Variable var = variableList.get(i);
if (var instanceof Constant) {
try {
((Constant) var).getExpression().evaluateConstant();
} catch (Exception ex) {
ex.printStackTrace(System.out);
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_Constant_NotANumber, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_CONSTANT, var.getExpression().infix()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
//
// count number of variables of each type
//
int volVarCount = 0;
int memVarCount = 0;
int filVarCount = 0;
int volRegionVarCount = 0;
int memRegionVarCount = 0;
int filRegionVarCount = 0;
int stochVarCount = 0;
int pointVarCount = 0;
for (int i = 0; i < variableList.size(); i++) {
Variable var = variableList.get(i);
if (var instanceof VolVariable) {
volVarCount++;
} else if (var instanceof MemVariable) {
memVarCount++;
} else if (var instanceof FilamentVariable) {
filVarCount++;
} else if (var instanceof VolumeRegionVariable) {
volRegionVarCount++;
} else if (var instanceof MembraneRegionVariable) {
memRegionVarCount++;
} else if (var instanceof FilamentRegionVariable) {
filRegionVarCount++;
} else if (var instanceof StochVolVariable) {
stochVarCount++;
} else if (var instanceof PointVariable) {
pointVarCount++;
}
}
//
for (int i = 0; i < subDomainList.size(); i++) {
try {
SubDomain subDomain = subDomainList.get(i);
Enumeration<Equation> equEnum = subDomain.getEquations();
while (equEnum.hasMoreElements()) {
Equation equ = equEnum.nextElement();
equ.checkValid(this, subDomain);
equ.bind(this);
}
FastSystem fastSystem = subDomain.getFastSystem();
if (fastSystem != null) {
Enumeration<FastRate> frEnum = fastSystem.getFastRates();
while (frEnum.hasMoreElements()) {
FastRate fr = frEnum.nextElement();
fr.bind(this);
}
Enumeration<FastInvariant> fiEnum = fastSystem.getFastInvariants();
while (fiEnum.hasMoreElements()) {
FastInvariant fi = fiEnum.nextElement();
fi.bind(this);
}
}
for (ParticleProperties pp : subDomain.getParticleProperties()) {
pp.bind(this);
}
for (ParticleJumpProcess pjp : subDomain.getParticleJumpProcesses()) {
pjp.bind(this);
Expression rateDefinition = null;
JumpProcessRateDefinition jprd = pjp.getParticleRateDefinition();
if (jprd instanceof MacroscopicRateConstant) {
rateDefinition = MathUtilities.substituteFunctions(((MacroscopicRateConstant) jprd).getExpression(), this);
} else if (jprd instanceof InteractionRadius) {
rateDefinition = MathUtilities.substituteFunctions(((InteractionRadius) jprd).getExpression(), this);
} else {
new RuntimeException("The jump process rate definition is not supported");
}
String[] symbols = rateDefinition.getSymbols();
if (symbols != null) {
for (String symbol : symbols) {
// throw exception for particle variables, particle variable cannot be referenced
Variable var = getVariable(symbol);
if (var instanceof ParticleVariable) {
throw new MathException("Stochastic variables can not be referenced in functions and equations.");
}
if (subDomain instanceof CompartmentSubDomain) {
if ((var instanceof MembraneRegionVariable || var instanceof MemVariable)) {
throw new MathException("Volume reaction: " + pjp.getName() + " cannot reference membrane variable: " + var.getName() + ".");
}
}
}
}
}
} catch (ExpressionBindingException e) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_ExpressionBindingException, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
} catch (ExpressionException e) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_ExpressionException, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
} catch (MathException e) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_MathException, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
//
if (geometry.getDimension() == 0) {
//
if (subDomainList.size() != 1) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_1, Issue.SEVERITY_ERROR);
issueList.add(issue);
} else if (subDomainList.size() == 1) {
if (!(subDomainList.get(0) instanceof CompartmentSubDomain)) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_2, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
CompartmentSubDomain subDomain = (CompartmentSubDomain) subDomainList.get(0);
// distinguish ODE model and stochastic model
if (isNonSpatialStoch()) {
if (stochVarCount == 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_StochasticModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_STOCHASTIC_MODEL_1, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (subDomain.getJumpProcesses().size() == 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_StochasticModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_STOCHASTIC_MODEL_2, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
// check variable initial condition
for (VarIniCondition varIniCondition : subDomain.getVarIniConditions()) {
Expression iniExp = varIniCondition.getIniVal();
try {
iniExp.bindExpression(this);
} catch (Exception ex) {
ex.printStackTrace(System.out);
setWarning(ex.getMessage());
}
}
// check probability rate
for (JumpProcess jumpProcess : subDomain.getJumpProcesses()) {
Expression probExp = jumpProcess.getProbabilityRate();
try {
probExp.bindExpression(this);
} catch (Exception ex) {
ex.printStackTrace(System.out);
setWarning(ex.getMessage());
}
}
} else if (isRuleBased()) {
} else {
// ODE model
//
// Check that all equations are ODEs
//
int odeCount = 0;
Enumeration<Equation> enum_equ = subDomain.getEquations();
while (enum_equ.hasMoreElements()) {
Equation equ = enum_equ.nextElement();
if (equ instanceof OdeEquation) {
odeCount++;
} else {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_3, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
if (odeCount == 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_4, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (volVarCount != odeCount) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_5, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (memVarCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_6, VCML.MembraneVariable), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (filVarCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_6, VCML.FilamentVariable), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (volRegionVarCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_6, VCML.VolumeRegionVariable), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (memRegionVarCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_6, VCML.MembraneRegionVariable), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (filRegionVarCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_CompartmentalModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_COMPARTMENT_MODEL_6, VCML.FilamentRegionVariable), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
//
// spatial (PDE and ODE)
//
} else {
//
// Check that the number of CompartmentSubdomains equals the number of VolumeSubVolumes in the Geometry
// Check that the number of FilamentSubdomains equals the number of Filaments in the Geometry
//
int compartmentCount = 0;
int membraneCount = 0;
int filamentCount = 0;
int pointCount = 0;
for (int i = 0; i < subDomainList.size(); i++) {
SubDomain subDomain = (SubDomain) subDomainList.get(i);
if (subDomain instanceof CompartmentSubDomain) {
if (geometry.getGeometrySpec().getSubVolume(subDomain.getName()) == null) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_1, subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
compartmentCount++;
} else if (subDomain instanceof MembraneSubDomain) {
membraneCount++;
} else if (subDomain instanceof FilamentSubDomain) {
filamentCount++;
} else if (subDomain instanceof PointSubDomain) {
pointCount++;
} else {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_2, subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
if (geometry.getGeometrySpec().getNumSubVolumes() != compartmentCount) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_3, geometry.getGeometrySpec().getNumSubVolumes(), compartmentCount), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (geometry.getGeometrySpec().getFilamentGroup().getFilamentCount() != filamentCount) {
// setWarning("Spatial model, there are "+geometry.getGeometrySpec().getFilamentGroup().getFilamentCount()+" filaments in geometry, but "+filamentCount+" "+VCML.FilamentSubDomain+"'s, must be equal");
// return false;
}
if (filamentCount == 0 && (filVarCount > 0 || filRegionVarCount > 0)) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_4, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (membraneCount == 0 && (memVarCount > 0 || memRegionVarCount > 0)) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_5, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
//
for (int i = 0; i < subDomainList.size(); i++) {
SubDomain subDomain1 = (SubDomain) subDomainList.get(i);
for (int j = 0; j < subDomainList.size(); j++) {
if (i != j) {
SubDomain subDomain2 = (SubDomain) subDomainList.get(j);
if (subDomain1.getName().equals(subDomain2.getName())) {
Issue issue = new Issue(subDomain1, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_6, subDomain1.getName(), subDomain2.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (subDomain1 instanceof MembraneSubDomain && subDomain2 instanceof MembraneSubDomain) {
MembraneSubDomain memSubDomain1 = (MembraneSubDomain) subDomain1;
MembraneSubDomain memSubDomain2 = (MembraneSubDomain) subDomain2;
if ((memSubDomain1.getInsideCompartment() == memSubDomain2.getInsideCompartment() && memSubDomain1.getOutsideCompartment() == memSubDomain2.getOutsideCompartment()) || (memSubDomain1.getInsideCompartment() == memSubDomain2.getOutsideCompartment() && memSubDomain1.getOutsideCompartment() == memSubDomain2.getInsideCompartment())) {
Issue issue = new Issue(subDomain1, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_7, memSubDomain1.getInsideCompartment().getName(), memSubDomain1.getOutsideCompartment().getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
}
// check periodic boundary conditons
for (int i = 0; i < subDomainList.size(); i++) {
SubDomain subDomain = (SubDomain) subDomainList.get(i);
if (subDomain instanceof CompartmentSubDomain) {
CompartmentSubDomain compartmentSubDomain = (CompartmentSubDomain) subDomain;
BoundaryConditionType bctM = compartmentSubDomain.getBoundaryConditionXm();
BoundaryConditionType bctP = compartmentSubDomain.getBoundaryConditionXp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Xm", "Xp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
bctM = compartmentSubDomain.getBoundaryConditionYm();
bctP = compartmentSubDomain.getBoundaryConditionYp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Ym", "Yp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
bctM = compartmentSubDomain.getBoundaryConditionZm();
bctP = compartmentSubDomain.getBoundaryConditionZp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Zm", "Zp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
} else if (subDomain instanceof MembraneSubDomain) {
MembraneSubDomain membraneSubDomain = (MembraneSubDomain) subDomain;
BoundaryConditionType bctM = membraneSubDomain.getBoundaryConditionXm();
BoundaryConditionType bctP = membraneSubDomain.getBoundaryConditionXp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Xm", "Xp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
bctM = membraneSubDomain.getBoundaryConditionYm();
bctP = membraneSubDomain.getBoundaryConditionYp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Ym", "Yp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
bctM = membraneSubDomain.getBoundaryConditionZm();
bctP = membraneSubDomain.getBoundaryConditionZp();
if (bctM.isPERIODIC() && !bctP.isPERIODIC() || !bctM.isPERIODIC() && bctP.isPERIODIC()) {
Issue issue = new Issue(subDomain, issueContext, IssueCategory.MathDescription_SpatialModel_Subdomain, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_9, "Zm", "Zp", subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
try {
if (geometry.getGeometrySpec().getDimension() > 0) {
//
// Check that there is a MembraneSubdomain for each unique subVolume-subVolume interface in Geometry
// each ResolvedSurfaceLocation is an instance of a subVolume-subVolume interface (one-to-one with region boundaries).
//
GeometricRegion[] regions = geometry.getGeometrySurfaceDescription().getGeometricRegions();
// }
if (regions == null) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_2, Issue.SEVERITY_ERROR);
issueList.add(issue);
} else {
for (int i = 0; i < regions.length; i++) {
if (regions[i] instanceof SurfaceGeometricRegion) {
SurfaceGeometricRegion surfaceRegion = (SurfaceGeometricRegion) regions[i];
SubVolume subVolume1 = ((VolumeGeometricRegion) surfaceRegion.getAdjacentGeometricRegions()[0]).getSubVolume();
CompartmentSubDomain compartment1 = getCompartmentSubDomain(subVolume1.getName());
if (compartment1 == null) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_3, getGeometry().getName(), subVolume1.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
SubVolume subVolume2 = ((VolumeGeometricRegion) surfaceRegion.getAdjacentGeometricRegions()[1]).getSubVolume();
CompartmentSubDomain compartment2 = getCompartmentSubDomain(subVolume2.getName());
if (compartment2 == null) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_3, getGeometry().getName(), subVolume2.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
MembraneSubDomain membraneSubDomain = getMembraneSubDomain(compartment1, compartment2);
if (compartment2 != null && compartment1 != null && membraneSubDomain == null) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_4, compartment1.getName(), compartment2.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
//
for (int i = 0; i < subDomainList.size(); i++) {
if (subDomainList.get(i) instanceof MembraneSubDomain) {
MembraneSubDomain membraneSubDomain = (MembraneSubDomain) subDomainList.get(i);
boolean bFoundSurfaceInGeometry = false;
for (int j = 0; j < regions.length; j++) {
if (regions[j] instanceof SurfaceGeometricRegion) {
SurfaceGeometricRegion surfaceRegion = (SurfaceGeometricRegion) regions[j];
VolumeGeometricRegion volumeRegion1 = (VolumeGeometricRegion) surfaceRegion.getAdjacentGeometricRegions()[0];
VolumeGeometricRegion volumeRegion2 = (VolumeGeometricRegion) surfaceRegion.getAdjacentGeometricRegions()[1];
String memInsideName = membraneSubDomain.getInsideCompartment().getName();
String memOutsideName = membraneSubDomain.getOutsideCompartment().getName();
if ((memInsideName.equals(volumeRegion1.getSubVolume().getName()) && memOutsideName.equals(volumeRegion2.getSubVolume().getName())) || (memInsideName.equals(volumeRegion2.getSubVolume().getName()) && memOutsideName.equals(volumeRegion1.getSubVolume().getName()))) {
bFoundSurfaceInGeometry = true;
break;
}
}
}
if (!bFoundSurfaceInGeometry) {
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_GEOMETRY_5, membraneSubDomain.getInsideCompartment().getName(), membraneSubDomain.getOutsideCompartment().getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
}
// }catch (GeometryException e){
// e.printStackTrace(System.out);
// setWarning("error validating MathDescription: "+e.getMessage());
// return false;
// }catch (ImageException e){
// e.printStackTrace(System.out);
// setWarning("error validating MathDescription: "+e.getMessage());
// return false;
// }catch (ExpressionException e){
// e.printStackTrace(System.out);
// setWarning("error validating MathDescription: "+e.getMessage());
// return false;
} catch (Exception e) {
e.printStackTrace(System.out);
Issue issue = new Issue(geometry, issueContext, IssueCategory.MathDescription_SpatialModel_Geometry, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
//
for (int i = 0; i < variableList.size(); i++) {
Variable var = variableList.get(i);
String varName = var.getName();
if (var instanceof VolVariable) {
VolVariable volVar = (VolVariable) var;
int pdeRefCount = 0;
int odeRefCount = 0;
int steadyPdeCount = 0;
int measureCount = 0;
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
Equation equ = subDomain.getEquation(volVar);
if (equ instanceof PdeEquation) {
if (((PdeEquation) equ).isSteady()) {
steadyPdeCount++;
} else {
pdeRefCount++;
}
//
for (int k = 0; k < subDomainList.size(); k++) {
SubDomain subDomain2 = subDomainList.get(k);
if (subDomain2 instanceof MembraneSubDomain) {
MembraneSubDomain membraneSubDomain = (MembraneSubDomain) subDomain2;
if (membraneSubDomain.getInsideCompartment() == subDomain || membraneSubDomain.getOutsideCompartment() == subDomain) {
JumpCondition jumpCondition = membraneSubDomain.getJumpCondition(volVar);
BoundaryConditionValue boundaryValue = ((PdeEquation) equ).getBoundaryConditionValue(membraneSubDomain.getName());
// if PDE variable does not have jump condition OR boundaryValue (neither or both are not allowed), its an error.
if ((jumpCondition == null && boundaryValue == null) || (jumpCondition != null && boundaryValue != null)) {
Issue issue = new Issue(equ, issueContext, IssueCategory.MathDescription_SpatialModel_Equation, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_10, varName, subDomain.getName(), membraneSubDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (boundaryValue != null && (subDomain.getBoundaryConditionSpec(membraneSubDomain.getName()) == null)) {
Issue issue = new Issue(equ, issueContext, IssueCategory.MathDescription_SpatialModel_Equation, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_10A, varName, subDomain.getName(), membraneSubDomain.getName(), membraneSubDomain.getName(), subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
} else if (equ instanceof OdeEquation) {
odeRefCount++;
} else if (equ instanceof MeasureEquation) {
measureCount++;
}
//
if (subDomain instanceof MembraneSubDomain) {
MembraneSubDomain memSubDomain = (MembraneSubDomain) subDomain;
JumpCondition jumpCondition = memSubDomain.getJumpCondition(volVar);
if (jumpCondition != null) {
boolean bInsidePresent = (memSubDomain.getInsideCompartment().getEquation(volVar) instanceof PdeEquation);
boolean bOutsidePresent = (memSubDomain.getOutsideCompartment().getEquation(volVar) instanceof PdeEquation);
if (!bInsidePresent && !bOutsidePresent) {
Issue issue = new Issue(equ, issueContext, IssueCategory.MathDescription_SpatialModel_Equation, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_11, varName, memSubDomain.getName(), memSubDomain.getInsideCompartment().getName(), memSubDomain.getOutsideCompartment().getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
//
if (!bInsidePresent && !jumpCondition.getInFluxExpression().isZero()) {
Issue issue = new Issue(equ, issueContext, IssueCategory.MathDescription_SpatialModel_Equation, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_12, varName, memSubDomain.getName(), memSubDomain.getInsideCompartment().getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (!bOutsidePresent && !jumpCondition.getOutFluxExpression().isZero()) {
Issue issue = new Issue(equ, issueContext, IssueCategory.MathDescription_SpatialModel_Equation, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_13, varName, memSubDomain.getName(), memSubDomain.getOutsideCompartment().getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
if (odeRefCount > 0 && pdeRefCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_14, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (steadyPdeCount > 0 && pdeRefCount > 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_15, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (odeRefCount == 0 && pdeRefCount == 0 && steadyPdeCount == 0 && measureCount == 0) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_16, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
} else //
if (var instanceof MemVariable) {
int pdeRefCount = 0;
int odeRefCount = 0;
int steadyPdeCount = 0;
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
Equation equ = subDomain.getEquation(var);
if (equ instanceof PdeEquation) {
if (((PdeEquation) equ).isSteady()) {
steadyPdeCount++;
} else {
pdeRefCount++;
}
} else if (equ instanceof OdeEquation) {
odeRefCount++;
}
}
if (odeRefCount > 0 && pdeRefCount > 0) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_14, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (steadyPdeCount > 0 && pdeRefCount > 0) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_15, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
if (odeRefCount == 0 && pdeRefCount == 0 && steadyPdeCount == 0) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_16, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
} else //
if (var instanceof FilamentVariable) {
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
if (subDomain instanceof FilamentSubDomain) {
Equation equ = subDomain.getEquation(var);
if (!(equ instanceof OdeEquation)) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_21, varName, subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
} else //
if (var instanceof VolumeRegionVariable) {
VolumeRegionVariable volRegionVar = (VolumeRegionVariable) var;
int count = 0;
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
if (subDomain instanceof CompartmentSubDomain) {
Equation equ = subDomain.getEquation(volRegionVar);
if (equ instanceof VolumeRegionEquation) {
count++;
//
for (int k = 0; k < subDomainList.size(); k++) {
SubDomain subDomain2 = subDomainList.get(k);
if (subDomain2 instanceof MembraneSubDomain) {
MembraneSubDomain membraneSubDomain = (MembraneSubDomain) subDomain2;
if (membraneSubDomain.getInsideCompartment() == subDomain || membraneSubDomain.getOutsideCompartment() == subDomain) {
if (membraneSubDomain.getJumpCondition(volRegionVar) == null) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_17, varName, subDomain.getName(), membraneSubDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
}
}
}
if (count == 0) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_18, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
} else //
if (var instanceof MembraneRegionVariable) {
int count = 0;
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
if (subDomain instanceof MembraneSubDomain) {
Equation equ = subDomain.getEquation(var);
if (equ instanceof MembraneRegionEquation) {
count++;
}
}
}
if (count == 0) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_19, varName), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
} else //
if (var instanceof FilamentRegionVariable) {
for (int j = 0; j < subDomainList.size(); j++) {
SubDomain subDomain = subDomainList.get(j);
if (subDomain instanceof FilamentSubDomain) {
Equation equ = subDomain.getEquation(var);
if (!(equ instanceof FilamentRegionEquation)) {
Issue issue = new Issue(var, issueContext, IssueCategory.MathDescription_SpatialModel_Variable, VCellErrorMessages.getErrorMessage(VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_20, varName, subDomain.getName()), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
}
}
}
if (eventList.size() > 0 && isSpatial()) {
Issue issue = new Issue(this, issueContext, IssueCategory.MathDescription_SpatialModel, VCellErrorMessages.MATH_DESCRIPTION_SPATIAL_MODEL_22, Issue.SEVERITY_ERROR);
issueList.add(issue);
}
for (Event event : eventList) {
try {
event.bind(this);
} catch (ExpressionBindingException e) {
Issue issue = new Issue(event, issueContext, IssueCategory.MathDescription_SpatialModel_Event, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
for (DataGenerator dataGenerator : postProcessingBlock.getDataGeneratorList()) {
try {
dataGenerator.bind(this);
} catch (ExpressionBindingException e) {
Issue issue = new Issue(dataGenerator, issueContext, IssueCategory.MathDescription_SpatialModel_PostProcessingBlock, e.getMessage(), Issue.SEVERITY_ERROR);
issueList.add(issue);
}
}
}
use of org.vcell.util.Issue in project vcell by virtualcell.
the class MathDescription method isValid.
public boolean isValid() {
IssueContext issueContext = new IssueContext(ContextType.MathDescription, this, null);
ArrayList<Issue> issueList = new ArrayList<Issue>();
gatherIssues(issueContext, issueList);
if (issueList.size() > 0) {
setWarning(issueList.get(0).getMessage());
}
return issueList.size() == 0;
}
use of org.vcell.util.Issue in project vcell by virtualcell.
the class ScopedExpressionTableCellRenderer method getTableCellRendererComponent.
/**
* This method is sent to the renderer by the drawing table to
* configure the renderer appropriately before drawing. Return
* the Component used for drawing.
*
* @param table the JTable that is asking the renderer to draw.
* This parameter can be null.
* @param value the value of the cell to be rendered. It is
* up to the specific renderer to interpret
* and draw the value. eg. if value is the
* String "true", it could be rendered as a
* string or it could be rendered as a check
* box that is checked. null is a valid value.
* @param isSelected true is the cell is to be renderer with
* selection highlighting
* @param row the row index of the cell being drawn. When
* drawing the header the rowIndex is -1.
* @param column the column index of the cell being drawn
*/
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
try {
TableModel tableModel = table.getModel();
if (value == null) {
templateJLabel.setIcon(null);
templateJLabel.setText(null);
templateJLabel.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (tableModel instanceof VCellSortTableModel) {
if (row < ((VCellSortTableModel<?>) tableModel).getRowCount()) {
Object rowObject = ((VCellSortTableModel<?>) tableModel).getValueAt(row);
if (rowObject instanceof SpeciesContextSpecParameter) {
templateJLabel.setText(((SpeciesContextSpecParameter) rowObject).getNullExpressionDescription());
}
}
}
return templateJLabel;
}
if (!(value instanceof ScopedExpression)) {
return stringRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
imageRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
JLabel renderer = imageRenderer;
ScopedExpression scopedExpression = (ScopedExpression) value;
String scopedExpressInfix = scopedExpression.infix();
ReusableExpressionIcon rei = scopedExpressionImageIconHash.get(scopedExpressInfix);
if (rei != null && rei.background.equals(imageRenderer.getBackground()) && rei.foreground.equals(imageRenderer.getForeground())) {
// Re-use existing ImageIcon is it exists and is same state
imageRenderer.setIcon(rei.imageIcon);
} else {
// Create new ImageIcon
try {
ExpressionPrintFormatter epf = new ExpressionPrintFormatter(scopedExpression.getRenamedExpression());
//
// Use graphicsContextProvider BufferedImage to get started because
// theTable may have a null GC and epf needs a non-null GC
//
java.awt.Graphics2D tempG2D = (java.awt.Graphics2D) graphicsContextProvider.getGraphics();
// Must set here before epf.getSize is called
tempG2D.setFont(italicFont);
// Determine how big the expression image will be
java.awt.Dimension dim = epf.getSize(tempG2D);
// Create and render the expression image
java.awt.image.BufferedImage bi = new java.awt.image.BufferedImage(dim.width, dim.height, java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D g2d = bi.createGraphics();
// epf.paint needs a non-null clipBounds
g2d.setClip(0, 0, dim.width, dim.height);
// set the SAME font used in epf.getSize
g2d.setFont(italicFont);
if (table != null && imageRenderer != null) {
g2d.setBackground(imageRenderer.getBackground());
g2d.setColor(imageRenderer.getForeground());
}
// paint background
g2d.clearRect(0, 0, dim.width, dim.height);
// paint expression into image
epf.paint(g2d);
// Limit cacheing in case a large number of DIFFERENT expressions are being serviced by this TableCellRenderer.
if ((scopedExpressionCacheSize + (dim.width * dim.height)) >= CACHE_SIZE_LIMIT) {
scopedExpressionImageIconHash.clear();
scopedExpressionCacheSize = 0;
}
javax.swing.ImageIcon newImageIcon = new javax.swing.ImageIcon(bi);
rei = new ReusableExpressionIcon(newImageIcon, imageRenderer.getBackground(), imageRenderer.getForeground());
if (scopedExpressionImageIconHash.put(scopedExpressInfix, rei) == null) {
scopedExpressionCacheSize += dim.width * dim.height;
}
imageRenderer.setIcon(newImageIcon);
} catch (Exception e) {
// Fallback to String
e.printStackTrace();
templateJLabel.setText(scopedExpression.infix());
renderer = templateJLabel;
}
}
ExpressionBindingException expressionBindingException = scopedExpression.getExpressionBindingException();
if (expressionBindingException != null) {
renderer.setBorder(BorderFactory.createLineBorder(Color.red));
renderer.setToolTipText(expressionBindingException.getMessage());
} else {
renderer.setBorder(BorderFactory.createEmptyBorder());
renderer.setToolTipText(null);
}
if (tableModel instanceof VCellSortTableModel) {
List<Issue> issueList = ((VCellSortTableModel<?>) tableModel).getIssues(row, column, Issue.SEVERITY_ERROR);
if (issueList.size() > 0) {
renderer.setToolTipText(Issue.getHtmlIssueMessage(issueList));
if (column == 0) {
renderer.setBorder(new MatteBorder(1, 1, 1, 0, Color.red));
} else if (column == table.getColumnCount() - 1) {
renderer.setBorder(new MatteBorder(1, 0, 1, 1, Color.red));
} else {
renderer.setBorder(new MatteBorder(1, 0, 1, 0, Color.red));
}
} else {
renderer.setBorder(BORDER);
}
}
return renderer;
} catch (Exception e) {
e.printStackTrace();
templateJLabel.setText("ScopedExpressionTableCellRenderer Error - " + e.getMessage() + " " + value);
return templateJLabel;
}
}
use of org.vcell.util.Issue in project vcell by virtualcell.
the class IssueManager method updateIssues0.
/**
* @param immediate update now, skip check of {@link #LAST_DIRTY_MILLISECONDS}
*/
private void updateIssues0(boolean immediate) {
if (vcDocument == null) {
return;
}
if (!immediate) {
if (dirtyTimestamp == 0) {
return;
}
long elapsedTime = System.currentTimeMillis() - dirtyTimestamp;
if (elapsedTime < LAST_DIRTY_MILLISECONDS) {
return;
}
}
try {
VCDocumentDecorator decorator = VCDocumentDecorator.getDecorator(vcDocument);
numErrors = 0;
numWarnings = 0;
ArrayList<Issue> oldIssueList = new ArrayList<Issue>(issueList);
ArrayList<Issue> tempIssueList = new ArrayList<Issue>();
IssueContext issueContext = new ManagerContext();
decorator.gatherIssues(issueContext, tempIssueList);
// vcDocument.gatherIssues(issueContext,tempIssueList);
issueList = new ArrayList<Issue>();
for (Issue issue : tempIssueList) {
if (issue instanceof SimpleBoundsIssue) {
continue;
}
issueList.add(issue);
Severity severity = issue.getSeverity();
if (severity == Issue.Severity.ERROR) {
numErrors++;
} else if (severity == Issue.Severity.WARNING) {
numWarnings++;
}
}
fireIssueEventListener(new IssueEvent(vcDocument, oldIssueList, issueList));
// System.out.println("\n................... update performed .................." + System.currentTimeMillis());
} finally {
dirtyTimestamp = 0;
if (bMoreTime) {
setDirty();
bMoreTime = false;
}
}
}
Aggregations