/** method to print a message. This is a help function. */ public void printMessage(ITextOutput _textOutput) { _textOutput.write(sender); _textOutput.write(" -- "); _textOutput.write(messageName); _textOutput.write(" -> "); _textOutput.write(receiver); }
public boolean check(IMdrContainer _mdrContainer, Iterator _parameters, ITextOutput _mainOutput) { textOutput = _mainOutput; boolean dump; textOutput.writeLn( "********************************************************************************************"); textOutput.writeLn( "* Safe Dependency Check *"); textOutput.writeLn( "********************************************************************************************"); textOutput.writeLn(""); init(_mdrContainer); dumpDependencies(); dumpClasses(); dump = test(_parameters); return dump; }
public void executeConsoleCommand( CommandDescriptor _command, Iterator _parameters, ITextOutput _mainOutput, ILogOutput _auxOutput) { /* switch(_command.getId()) { case CID_COMMAND01: _mainOutput.writeLn("class diagram mapping started"); break; case CID_COMMAND02: break; default: throw new ExceptionProgrammLogicError("Unknown command"); } */ ClassDiagramMapper _cdm; if (_command.getId() == 1 || _command.getId() == 2) { _cdm = new ClassDiagramMapper(mdrContainer, _mainOutput); } else { throw new ExceptionProgrammLogicError("Unknown command"); } if (_command.getId() == 1) { _mainOutput.writeLn("class diagram mapping started"); _cdm.setWrite2fs(true); } else if (_command.getId() == 2) { _cdm.setWrite2fs(false); } _cdm.doMap(); }
public boolean test(Iterator _parameters) { boolean result = true; File _xmlFile; boolean _foundFile = false; String filePath = new String(""); HashMap sdInstanceMap = new HashMap(); for (; _parameters.hasNext(); ) { CommandParameterDescriptor _parameter = (CommandParameterDescriptor) _parameters.next(); filePath = _parameter.getAsFile().getAbsolutePath(); try { if (_parameter.getId() == ToolSafeTest.CID_SD_XML_FILE && !filePath.equals("")) { _xmlFile = _parameter.getAsFile(); if (_xmlFile.exists()) { _foundFile = true; SafeDependencyHandler SDXmlHandler = new SafeDependencyHandler(textOutput); XMLFileParser xmlFailureFileParser = new XMLFileParser(filePath, SDXmlHandler); sdInstanceMap = SDXmlHandler.getSDInstanceMap(); if (sdInstanceMap == null) { textOutput.writeLn(" the .xml file is empty or not corret."); result = false; return result; } } else { textOutput.writeLn("The inputed file \"" + filePath + "\" is not existed."); result = false; return result; } } } catch (Exception exc) { textOutput.writeLn(exc.toString()); result = false; return result; } } int p = 1; Set dependKeySets = dependencyMap.keySet(); for (Iterator itKeys = dependKeySets.iterator(); itKeys.hasNext(); ) { String CorS1 = null; String CorS2 = null; String compName = null; String anName = null; textOutput.writeLn( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); textOutput.writeLn( ">>>>>>>>>> the " + p + ". test is starting <<<<<<<<<"); String dependName = (String) itKeys.next(); textOutput.writeLn(""); textOutput.writeLn("** There is a dependency named: \"" + dependName + "\". **"); diagComponent dDepend = (diagComponent) dependencyMap.get(dependName); String clientName = (String) dependClientMap.get(dependName); diagComponent diagClient = (diagComponent) classMap.get(clientName); if (diagClient == null) { textOutput.writeLn("** This Dependency hasn\'t Client. **"); result = false; continue; } textOutput.writeLn("** The Client of this Dependency named: \"" + clientName + "\". **"); String supplierName = (String) dependSupplierMap.get(dependName); diagComponent diagSupplier = (diagComponent) classMap.get(supplierName); if (diagSupplier == null) { textOutput.writeLn("** This Dependency hasn\'t Supplier. **"); result = false; continue; } textOutput.writeLn("** The Supplier of this Dependency named: \"" + supplierName + "\". **"); String clientStereotypeName = diagClient.getStereotype().getName(); String supplierStereotypeName = diagSupplier.getStereotype().getName(); HashMap TagAndValue1; HashMap TagAndValue2; if (clientStereotypeName != null && clientStereotypeName.equalsIgnoreCase(ToolSafeLinksConstants.CRITICAL)) { CorS1 = "Client"; CorS2 = "Supplier"; compName = clientName; anName = supplierName; TagAndValue1 = diagClient.getTagandValue(); TagAndValue2 = diagSupplier.getTagandValue(); } else if (supplierStereotypeName != null && supplierStereotypeName.equalsIgnoreCase(ToolSafeLinksConstants.CRITICAL)) { CorS1 = "Supplier"; CorS2 = "Client"; compName = supplierName; anName = clientName; TagAndValue1 = diagSupplier.getTagandValue(); TagAndValue2 = diagClient.getTagandValue(); } else { textOutput.writeLn( "** Neither Client nor Supplier of this Dependency should be checked. **"); result = false; continue; } textOutput.writeLn( ">>>>> These Client and Supplier of the Dependency must be checked! <<<<<"); Set tvKeys1 = TagAndValue1.keySet(); String cLevel = null; String cgString = null; String[] levelAim = new String[3]; for (Iterator itTVKey1 = tvKeys1.iterator(); itTVKey1.hasNext(); ) { String tag = (String) itTVKey1.next(); String value = (String) TagAndValue1.get(tag); textOutput.writeLn( "-- The " + CorS1 + " \"" + compName + "\" has a Tag \"" + tag + "\" and a Value of this Tag \"" + value + "\". --"); if (sdInstanceMap.get(tag) != null) { cLevel = tag; cgString = value; } } if (cLevel == null) { textOutput.writeLn( "-- The " + CorS1 + " \"" + compName + "\" of this dependency " + "has not Safety LeveL. !!!!!! Check failed!!!!!! --"); result = false; continue; } Set tvKeys2 = TagAndValue2.keySet(); String sgString = null; for (Iterator itTVKey2 = tvKeys2.iterator(); itTVKey2.hasNext(); ) { String tag = (String) itTVKey2.next(); String value = (String) TagAndValue2.get(tag); textOutput.writeLn( "-- The " + CorS2 + " \"" + anName + "\" has a Tag \"" + tag + "\" and a Value of this Tag \"" + value + "\". --"); if (tag.equalsIgnoreCase(cLevel)) { sgString = value; } } String cFeature = null; String sFeature = null; if (sgString == null) { textOutput.writeLn( "-- The " + CorS1 + " \"" + compName + "\" and the " + CorS2 + " \"" + anName + "\" of this dependency has not identical Safety LeveL. !!!!!! Check failed!!!!!! --"); result = false; continue; } else { if (cgString != null) { int ccs = cgString.indexOf("("); int cce = cgString.indexOf(")"); if (ccs != -1 && cce != -1) { try { cFeature = cgString.substring(0, ccs); } catch (NumberFormatException exc) { textOutput.writeLn( "-- The Value of the Level \"" + cLevel + "\" in the " + CorS1 + " \"" + compName + "\" is not correct. --"); result = false; continue; } } else { textOutput.writeLn( "-- The Value of the Level \"" + cLevel + "\" in the " + CorS1 + " \"" + compName + "\" has not bracket. --"); result = false; continue; } } else { textOutput.writeLn( "-- The Value of the Level \"" + cLevel + "\" in the " + CorS1 + " \"" + compName + "\" is empty. --"); result = false; continue; } int scs = sgString.indexOf("("); int sce = sgString.indexOf(")"); if (scs != -1 && sce != -1) { try { sFeature = sgString.substring(0, scs); } catch (NumberFormatException exc) { textOutput.writeLn( "-- The Value of the Level \"" + cLevel + "\" in the " + CorS2 + " \"" + anName + "\" is not correct. --"); result = false; continue; } } else { textOutput.writeLn( "-- The Value of the Level \"" + cLevel + "\" in the " + CorS2 + " \"" + anName + "\" has not bracket. --"); result = false; continue; } String valueStr = null; String cGoal = null; String dGoal = null; float cValue = Float.NaN; float dValue = Float.NaN; if (!cFeature.equalsIgnoreCase(sFeature)) { textOutput.writeLn( "-- The destination Features of " + CorS1 + " \"" + compName + "\" and the " + CorS2 + " \"" + anName + "\" of this dependency are not identical. " + "!!!!!! Check failed!!!!!! --"); result = false; continue; } else { safeDependencyXml sdXml = (safeDependencyXml) sdInstanceMap.get(cLevel); valueStr = sdXml.getGoal(); if (valueStr != null) { int xcs = valueStr.indexOf("("); int xce = valueStr.indexOf(")"); if (xcs != -1 && xce != -1) { try { cGoal = valueStr.substring(0, xcs); String cValueStr = valueStr.substring(xcs + 1, xce); cValue = Float.parseFloat(cValueStr); } catch (NumberFormatException exc) { textOutput.writeLn( "-- The Value of the Goal \"" + cGoal + "\" for the " + CorS1 + " \"" + compName + "\" in the .xml file is not correct. --"); result = false; continue; } } } else { textOutput.writeLn("-- The Value of the goal in the .xml file are empty. --"); result = false; continue; } diagStereotype dependStereotype = dDepend.getStereotype(); HashMap depSteTagAndValue = dependStereotype.getTagandValue(); if (depSteTagAndValue != null) { String dstTaggedValueStr = (String) depSteTagAndValue.get(cLevel); if (dstTaggedValueStr == null) { textOutput.writeLn( "-- The Stereotype of the dependency \"" + dependName + "\" has not a Value " + "of Level \"" + cLevel + "\". --"); result = false; continue; } else { textOutput.writeLn( "-- The Stereotype of the dependency \"" + dependName + "\" has a Tagged Value" + " with a Tag (Level) \"" + cLevel + "\" and a Value (Gaol) \"" + dstTaggedValueStr + "\". --"); int dcs = dstTaggedValueStr.indexOf("("); int dce = dstTaggedValueStr.indexOf(")"); if (dcs != -1 && dce != -1) { try { dGoal = valueStr.substring(0, dcs); String dValueStr = dstTaggedValueStr.substring(dcs + 1, dce); dValue = Float.parseFloat(dValueStr); } catch (NumberFormatException exc) { textOutput.writeLn( "-- The value of TaggedValue of the stereotype of the dependency \"" + dependName + "\" is not correct. --"); result = false; continue; } } else { textOutput.writeLn( "-- The value of taggedValue of the stereotype of the dependency \"" + dependName + "\" has not bracket. --"); result = false; continue; } } } else { textOutput.writeLn( "-- The Stereotype of the dependency \"" + dependName + "\" has not taggedValue. --"); result = false; continue; } // TODO if (cGoal.equalsIgnoreCase(dGoal)) { if (cGoal.equalsIgnoreCase(ToolSafeLinksConstants.IMMEDIATE)) { if (cValue != Float.NaN && dValue != Float.NaN && dValue <= cValue) { textOutput.writeLn("### The check is successfully finished!!! ###"); } else { textOutput.writeLn( "### The check has failed. Reason: \"the Goal of Dependency " + dValue + " <= the Goal of " + CorS1 + " " + cValue + "\" not correct. ###"); result = false; } } else if (cGoal.equalsIgnoreCase(ToolSafeLinksConstants.CORRECT)) { if (cValue != Float.NaN && dValue != Float.NaN && dValue >= cValue) { textOutput.writeLn("### The check is successfully finished!!! ###"); } else { textOutput.writeLn( "### The check has failed. Reason: \"the Goal of Dependency " + dValue + " >= the Goal of " + CorS1 + " " + cValue + "\" not correct. ###"); result = false; } } } else { textOutput.writeLn( "-- The Goal of Safety Level \"" + cLevel + "\" in the Stereotype of the dependency \"" + dependName + "\" is not identical with which required in the XML file. --"); result = false; continue; } } } textOutput.writeLn(""); textOutput.writeLn( ">>>>>>>>>> the " + p + ". test is finished. <<<<<<<<<"); textOutput.writeLn( "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); p++; } return result; }