You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(7) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Peter S. <sch...@us...> - 2008-07-07 16:19:36
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18388/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PLBCompiler.java Log Message: options to compile with listing file and debug infos Index: PLBCompiler.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PLBCompiler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- PLBCompiler.java 8 Jan 2007 11:19:40 -0000 1.3 +++ PLBCompiler.java 7 Jul 2008 16:19:38 -0000 1.4 @@ -28,116 +28,144 @@ private Properties plbEnv; private File tmp; private String plbwinINIFile; + private boolean withDebug; + private boolean withListing; public PLBCompiler() throws IOException { - tmp = File.createTempFile("PLBCompiler",".log"); - plbEnv = new Properties(); + tmp = File.createTempFile("PLBCompiler",".log"); + plbEnv = new Properties(); } public void usePlbWinINIFile(String wini) throws Exception { - plbwinINIFile = wini; + plbwinINIFile = wini; } - + public void usePlbCompilerProperties(String cmpprops) throws Exception { - Properties cmpenv = new Properties(); - cmpenv.load(new FileInputStream(cmpprops)); - Enumeration keys = cmpenv.propertyNames(); - while (keys.hasMoreElements()) { - String key = (String) keys.nextElement(); - if (StringUtils.isNotBlank(cmpenv.getProperty(key))) { - plbEnv.setProperty(key.toUpperCase(), cmpenv.getProperty(key)); - } - } + Properties cmpenv = new Properties(); + cmpenv.load(new FileInputStream(cmpprops)); + Enumeration keys = cmpenv.propertyNames(); + while (keys.hasMoreElements()) { + String key = (String) keys.nextElement(); + if (StringUtils.isNotBlank(cmpenv.getProperty(key))) { + plbEnv.setProperty(key.toUpperCase(), cmpenv.getProperty(key)); + } + } + } + + public void setDebug(boolean debug) { + withDebug = debug; + } + + public void setListing(boolean listing) { + withListing = listing; } public int compile(File plbSource) throws Exception { - if (plbSource == null || !plbSource.exists()) { - throw new IllegalArgumentException("PLB Source does not exist "); - } - final File workingDir = plbSource.getParentFile(); - final String name = plbSource.getName(); + if (plbSource == null || !plbSource.exists()) { + throw new IllegalArgumentException("PLB Source does not exist "); + } + final File workingDir = plbSource.getParentFile(); + final String name = plbSource.getName(); - - String[] cmd; - int i = -1; - final int ANZ_OPTS=14; - if (StringUtils.isNotBlank(plbwinINIFile)) { - cmd = new String[ANZ_OPTS+3]; - cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); - cmd[++i] = "-h"; - cmd[++i] = "-i"; - cmd[++i] = plbwinINIFile; - } else { - cmd = new String[ANZ_OPTS]; - cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); - } - cmd[++i] = "plbcmp"; - cmd[++i] = plbSource.getAbsolutePath(); - cmd[++i] = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(name, ".dbs", ".plc"); - cmd[++i] = "-E=dbs"; - cmd[++i] = "E"; - cmd[++i] = "P"; - if (File.separator.equals("/")) { - cmd[++i] = "\"x header\""; - } else { - cmd[++i] = "\"x header\""; - } - cmd[++i] = "99999"; - cmd[++i] = "S"; - cmd[++i] = "ZH"; - cmd[++i] = "ZT"; - cmd[++i] = "ZG"; - cmd[++i] = "ZV"; - - PrintStream devnull = new PrintStream(tmp); - if (!Boolean.parseBoolean(plbEnv.getProperty("RSI_DEBUG","false"))) { - tmp.deleteOnExit(); - } - return ProcessRunner.exec(cmd, plbEnv, workingDir, devnull, devnull); + + String[] cmd; + int i = -1; + int ANZ_OPTS; + if (withDebug) { + ANZ_OPTS =14; + } else { + ANZ_OPTS =13; + } + if (StringUtils.isNotBlank(plbwinINIFile)) { + cmd = new String[ANZ_OPTS+3]; + cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); + cmd[++i] = "-h"; + cmd[++i] = "-i"; + cmd[++i] = plbwinINIFile; + } else { + cmd = new String[ANZ_OPTS]; + cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); + } + cmd[++i] = "plbcmp"; + cmd[++i] = plbSource.getAbsolutePath(); + cmd[++i] = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(name, ".dbs", ".plc"); + cmd[++i] = "-E=dbs"; + if (withListing) { + cmd[++i] = "L"; + } else { + cmd[++i] = "E"; + } + cmd[++i] = "P"; + if (File.separator.equals("/")) { + cmd[++i] = "\"x header\""; + } else { + cmd[++i] = "\"x header\""; + } + cmd[++i] = "99999"; + if (withDebug) { + cmd[++i] = "S"; + } + cmd[++i] = "ZH"; + cmd[++i] = "ZT"; + cmd[++i] = "ZG"; + cmd[++i] = "ZV"; + + PrintStream devnull = new PrintStream(tmp); + if (!Boolean.parseBoolean(plbEnv.getProperty("RSI_DEBUG","false"))) { + tmp.deleteOnExit(); + } + return ProcessRunner.exec(cmd, plbEnv, workingDir, devnull, devnull); } - + public void analyzeListing(File plbSource) throws Exception { - String listing = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(plbSource.getName(), ".dbs", ".lst"); - ListingAnalyzer analyzer = new ListingAnalyzer(listing, plbSource.getAbsolutePath()); - analyzer.printGeneric(); + String listing = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(plbSource.getName(), ".dbs", ".lst"); + ListingAnalyzer analyzer = new ListingAnalyzer(listing, plbSource.getAbsolutePath()); + analyzer.printGeneric(); } public static void main(String[] args) throws Exception { - CommandLineParser parser = new GnuParser(); - Options options = new Options(); - Option plbwinIni = OptionBuilder.withArgName("properties-file") - .hasArg() - .withDescription( "plbwin ini File") - .create( "plbwini"); - - Option plbcmp = OptionBuilder.withArgName( "properties-file" ) - .hasArg() - .withDescription( "Configuration Properties for the PLBCompiler") - .create( "plbcmp"); - - options.addOption(plbwinIni); - options.addOption(plbcmp); - - CommandLine line = parser.parse( options, args ); - PLBCompiler compiler = new PLBCompiler(); - - if (line.hasOption("plbwini")) { - compiler.usePlbWinINIFile(line.getOptionValue("plbwini")); - } - if (line.hasOption("plbcmp")) { - compiler.usePlbCompilerProperties(line.getOptionValue("plbcmp")); - } - - args = line.getArgs(); - - for (int i = 0; i < args.length; i++) { - System.out.println("Compiling " + args[i]); - File plbSource = new File(args[i]); - int returnCode = compiler.compile(plbSource); - if (returnCode != 0) { - System.err.println("PLB Compiler returned errorcode '" + returnCode + "'"); - } - compiler.analyzeListing(plbSource); - } + CommandLineParser parser = new GnuParser(); + Options options = new Options(); + Option plbwinIni = OptionBuilder.withArgName("properties-file") + .hasArg() + .withDescription( "plbwin ini File") + .create( "plbwini"); + + Option plbcmp = OptionBuilder.withArgName( "properties-file" ) + .hasArg() + .withDescription( "Configuration Properties for the PLBCompiler") + .create( "plbcmp"); + + Option debug = new Option( "debug", "print debugging information" ); + Option listing = new Option( "withListing", "create debug listing" ); + + options.addOption(plbwinIni); + options.addOption(plbcmp); + options.addOption(debug); + options.addOption(listing); + + CommandLine line = parser.parse( options, args ); + PLBCompiler compiler = new PLBCompiler(); + + if (line.hasOption("plbwini")) { + compiler.usePlbWinINIFile(line.getOptionValue("plbwini")); + } + if (line.hasOption("plbcmp")) { + compiler.usePlbCompilerProperties(line.getOptionValue("plbcmp")); + } + compiler.setDebug(line.hasOption("debug")); + compiler.setListing(line.hasOption("withListing")); + + args = line.getArgs(); + + for (int i = 0; i < args.length; i++) { + System.out.println("Compiling " + args[i]); + File plbSource = new File(args[i]); + int returnCode = compiler.compile(plbSource); + if (returnCode != 0) { + System.err.println("PLB Compiler returned errorcode '" + returnCode + "'"); + } + compiler.analyzeListing(plbSource); + } } } |
From: Peter S. <sch...@us...> - 2007-12-14 13:24:21
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14840/Plb/src/java/net/sf/plb4jedit/plb Modified Files: ListingAnalyzer.java Log Message: fix: errors in includes in the same directory as the source were not handeled properly Index: ListingAnalyzer.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/ListingAnalyzer.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ListingAnalyzer.java 25 Aug 2005 09:21:06 -0000 1.5 +++ ListingAnalyzer.java 14 Dec 2007 13:24:23 -0000 1.6 @@ -6,6 +6,7 @@ package net.sf.plb4jedit.plb; import java.io.BufferedReader; +import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -17,6 +18,9 @@ import java.util.regex.Pattern; /** * $Log$ + * Revision 1.6 2007/12/14 13:24:23 schaefep + * fix: errors in includes in the same directory as the source were not handeled properly + * * Revision 1.5 2005/08/25 09:21:06 ampeer * Added new RE for plb90-loop-error * @@ -27,18 +31,18 @@ * some refactorings in PlbSource and Include for better use in PlbRepository * Revision 1.2 2003/12/09 14:20:13 schaefep * format - * + * * Revision 1.1 2003/11/07 16:57:27 schaefep initial ps - * + * * program to analyze compile output from plbcmp - * + * * Analyze listings created by the plb compiler using options PE 999999 * Compiling a source xxxxxx.dbs with these options produce a xxxxxx.lst in the * directory where the xxxxxx.plc is stored. @autor Peter Schaefer */ public class ListingAnalyzer { public final static String cvsId = - "$Header$"; + "$Header$"; /** * stores the original listing; each entry one line of the listing as * String @@ -68,6 +72,7 @@ private Pattern fatalErrorPattern; private Pattern resultPattern; private String listName; + private String srcDir; /** * avoid construction without an listing @@ -81,219 +86,225 @@ * windows/dos you don't have to escape the double ticks ... */ public ListingAnalyzer(String listName, String sourceName) - throws IOException, FileNotFoundException { - if (sourceName == null || sourceName.length() == 0) { - throw new IllegalArgumentException("need sourceName (full path)"); - } - this.listName = listName; - programName = sourceName; - BufferedReader reader = - new BufferedReader( - new InputStreamReader(new FileInputStream(listName))); - listing = new Vector(); - errors = new Vector(); - warnings = new Vector(); - includes = new HashMap(); - String line = null; - int i = 0; - while ((line = reader.readLine()) != null) { - if (line.trim().length() > 0) { - listing.add(line); - } - } - reader.close(); - if (listing.size() == 0) { - throw new IllegalArgumentException( - "Error: listing is empty. (May happen " - + "if compilation failed, because debugger is executing program!"); - } - initPattern(); - for (i = 0; i < listing.size(); i++) { - analyze(i); - } + throws IOException, FileNotFoundException { + if (sourceName == null || sourceName.length() == 0) { + throw new IllegalArgumentException("need sourceName (full path)"); + } + File srcFile = new File(sourceName); + srcDir = srcFile.getParent(); + + this.listName = listName; + programName = sourceName; + BufferedReader reader = + new BufferedReader( + new InputStreamReader(new FileInputStream(listName))); + listing = new Vector(); + errors = new Vector(); + warnings = new Vector(); + includes = new HashMap(); + String line = null; + int i = 0; + while ((line = reader.readLine()) != null) { + if (line.trim().length() > 0) { + listing.add(line); + } + } + reader.close(); + if (listing.size() == 0) { + throw new IllegalArgumentException( + "Error: listing is empty. (May happen " + + "if compilation failed, because debugger is executing program!"); + } + initPattern(); + for (i = 0; i < listing.size(); i++) { + analyze(i); + } } private void initPattern() { - // 85.AC INCLUDE AD: /opt/rsi/plbsrc/incs/misc/rsistart.dbs - includePattern = - Pattern.compile( - ".*\\d.[ ,a-zA-Z]{0,2}\\s*INCLUDE ([ ,a-zA-Z]{1,2}):\\s*(.*)"); - //errorPattern = Pattern.compile("^\\s*(\\*)ERROR\\*.*$"); - errorPattern = Pattern.compile("^\\s*(\\*).*$"); - warningPattern = Pattern.compile("^\\s*(\\*)WARNING\\*.*$"); - // 91.AA moe spaces,#alausw - locateErrorPattern = - Pattern.compile("\\s*(\\d*)\\.([ ,a-zA-Z]{0,2})\\s*(.*)$"); - undefinedExecutionLabelPattern = - Pattern.compile("^(Undefined execution label:.*).*$"); - ifLoopSwitchNotTerminatedPattern = - Pattern.compile( - "^IF/LOOP/SWITCH statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); - ifLoopSwitchNotTerminatedPattern90 = - Pattern.compile( - "^IF/LOOP/SWITCH/FOR statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); - lastWordPattern = Pattern.compile("\\.*([a-zA-Z0-9#]+)$"); - fatalErrorPattern = Pattern.compile("\\.*FATAL ERROR ENCOUNTERED.*$"); - resultPattern = - Pattern.compile( - "^\\s*(\\d*) LINES;\\s*(\\d*) ERRORS;\\s*(\\d*) WARNINGS;.*$"); + // 85.AC INCLUDE AD: /opt/rsi/plbsrc/incs/misc/rsistart.dbs + includePattern = + Pattern.compile( + ".*\\d.[ ,a-zA-Z]{0,2}\\s*INCLUDE ([ ,a-zA-Z]{1,2}):\\s*(.*)"); + //errorPattern = Pattern.compile("^\\s*(\\*)ERROR\\*.*$"); + errorPattern = Pattern.compile("^\\s*(\\*).*$"); + warningPattern = Pattern.compile("^\\s*(\\*)WARNING\\*.*$"); + // 91.AA moe spaces,#alausw + locateErrorPattern = + Pattern.compile("\\s*(\\d*)\\.([ ,a-zA-Z]{0,2})\\s*(.*)$"); + undefinedExecutionLabelPattern = + Pattern.compile("^(Undefined execution label:.*).*$"); + ifLoopSwitchNotTerminatedPattern = + Pattern.compile( + "^IF/LOOP/SWITCH statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); + ifLoopSwitchNotTerminatedPattern90 = + Pattern.compile( + "^IF/LOOP/SWITCH/FOR statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); + lastWordPattern = Pattern.compile("\\.*([a-zA-Z0-9#]+)$"); + fatalErrorPattern = Pattern.compile("\\.*FATAL ERROR ENCOUNTERED.*$"); + resultPattern = + Pattern.compile( + "^\\s*(\\d*) LINES;\\s*(\\d*) ERRORS;\\s*(\\d*) WARNINGS;.*$"); } private void analyze(int i) { - String line = (String) listing.get(i); - Matcher matcher, errorMatcher; - matcher = includePattern.matcher(line); - if (matcher.matches()) { - int found = matcher.groupCount(); - if (found == 2) { - String key = matcher.group(1).trim(); - String includeName = matcher.group(2); - debug(found + ":" + key + ":" + includeName); - includes.put(key, includeName); - } - } + String line = (String) listing.get(i); + Matcher matcher, errorMatcher; + matcher = includePattern.matcher(line); + if (matcher.matches()) { + int found = matcher.groupCount(); + if (found == 2) { + String key = matcher.group(1).trim(); + String includeName = matcher.group(2); + if (includeName.indexOf(File.separator) < 0) { + includeName = srcDir + File.separator + includeName; + } + debug(found + ":" + key + ":" + includeName); + includes.put(key, includeName); + } + } - if ((errorMatcher = errorPattern.matcher(line)).matches()) { - if ((matcher = - locateErrorPattern.matcher((String) listing.get(i - 1))) - .matches()) { - String key = matcher.group(2).trim(); - //debug("key="+key+" " +includes.get(key.trim())); - String lineNo = matcher.group(1); - //String source = matcher.group(3); - String msg = ((String) listing.get(i + 1)).trim(); - String sourceName = programName; - if (key != null - && key.trim().length() > 0 - && includes.containsKey(key)) { - sourceName = (String) includes.get(key); - } - int col = line.indexOf("*"); - debug( - "errorPattern->" - + sourceName - + " " - + lineNo - + " column=" - + col - + " msg=" - + msg); - addError(new String(sourceName + ":" + lineNo + ":" + msg)); - if (col > 0) { - String prevLine = (String) listing.get(i - 1); - String location = prevLine; - if ((matcher = locateErrorPattern.matcher(location)) - .matches()) { - location = matcher.group(3); - } - appendError(new String("location: " + location)); - String symbol = null; - // cut up to position before error arised - if (col >= prevLine.length()) { - symbol = prevLine; - } else { - symbol = prevLine.substring(0, col); - } - if ((matcher = lastWordPattern.matcher(symbol)) - .matches()) { - symbol = matcher.group(1); - } else { - symbol = "at the end of the line"; - } - appendError(new String("symbol: " + symbol)); - } - } - debug("error: " + listing.get(i + 1) + " at " + listing.get(i - 1)); - debug("error starts at " + errorMatcher.group(1)); - } - if ((matcher = warningPattern.matcher(line)).matches()) { - if ((matcher = - locateErrorPattern.matcher((String) listing.get(i - 1))) - .matches()) { - String key = matcher.group(2).trim(); - debug(key + " " + includes.get(key.trim())); - String lineNo = matcher.group(1); - //String source = matcher.group(3); - String msg = ((String) listing.get(i + 1)).trim(); - String sourceName = programName; - if (key != null - && key.trim().length() > 0 - && includes.containsKey(key)) { - sourceName = (String) includes.get(key); - } - debug("Warning:" + sourceName + ":" + lineNo + ":" + msg); - warnings.add(new String(sourceName + ":" + lineNo + ":" + msg)); - } - debug( - "warning: " + listing.get(i + 1) + " at " + listing.get(i - 1)); - } - if ((matcher = undefinedExecutionLabelPattern.matcher(line)) - .matches()) { - addError( - new String(programName + ":" + 1 + ":" + matcher.group(0))); - } - if ((matcher = ifLoopSwitchNotTerminatedPattern.matcher(line)) - .matches()) { - String lineNumber = matcher.group(1); - String key = matcher.group(3); - //System.out.println("Key: "+key); - String sourceName = programName; - if (key != null - && key.trim().length() > 0 - && includes.containsKey(key)) { - sourceName = (String) includes.get(key); - } - addError( - new String( - sourceName - + ":" - + lineNumber - + ": if/Loop/Switch/ not terminated")); - } - if ((matcher = ifLoopSwitchNotTerminatedPattern90.matcher(line)) - .matches()) { - String lineNumber = matcher.group(1); - String key = matcher.group(3); - //System.out.println("Key: "+key); - String sourceName = programName; - if (key != null - && key.trim().length() > 0 - && includes.containsKey(key)) { - sourceName = (String) includes.get(key); - } - addError( - new String( - sourceName - + ":" - + lineNumber - + ": if/Loop/Switch/For not terminated")); - } - if ((matcher = fatalErrorPattern.matcher(line)).matches()) { - addError(new String(programName + ":1: FATAL ERROR ENCOUNTERED")); - } - if ((matcher = resultPattern.matcher(line)).matches()) { - resultMessage = line; - realErrors = Integer.parseInt(matcher.group(2)); - realWarnings = Integer.parseInt(matcher.group(3)); - } + if ((errorMatcher = errorPattern.matcher(line)).matches()) { + if ((matcher = + locateErrorPattern.matcher((String) listing.get(i - 1))) + .matches()) { + String key = matcher.group(2).trim(); + //debug("key="+key+" " +includes.get(key.trim())); + String lineNo = matcher.group(1); + //String source = matcher.group(3); + String msg = ((String) listing.get(i + 1)).trim(); + String sourceName = programName; + if (key != null + && key.trim().length() > 0 + && includes.containsKey(key)) { + sourceName = (String) includes.get(key); + } + int col = line.indexOf("*"); + debug( + "errorPattern->" + + sourceName + + " " + + lineNo + + " column=" + + col + + " msg=" + + msg); + addError(new String(sourceName + ":" + lineNo + ":" + msg)); + if (col > 0) { + String prevLine = (String) listing.get(i - 1); + String location = prevLine; + if ((matcher = locateErrorPattern.matcher(location)) + .matches()) { + location = matcher.group(3); + } + appendError(new String("location: " + location)); + String symbol = null; + // cut up to position before error arised + if (col >= prevLine.length()) { + symbol = prevLine; + } else { + symbol = prevLine.substring(0, col); + } + if ((matcher = lastWordPattern.matcher(symbol)) + .matches()) { + symbol = matcher.group(1); + } else { + symbol = "at the end of the line"; + } + appendError(new String("symbol: " + symbol)); + } + } + debug("error: " + listing.get(i + 1) + " at " + listing.get(i - 1)); + debug("error starts at " + errorMatcher.group(1)); + } + if ((matcher = warningPattern.matcher(line)).matches()) { + if ((matcher = + locateErrorPattern.matcher((String) listing.get(i - 1))) + .matches()) { + String key = matcher.group(2).trim(); + debug(key + " " + includes.get(key.trim())); + String lineNo = matcher.group(1); + //String source = matcher.group(3); + String msg = ((String) listing.get(i + 1)).trim(); + String sourceName = programName; + if (key != null + && key.trim().length() > 0 + && includes.containsKey(key)) { + sourceName = (String) includes.get(key); + } + debug("Warning:" + sourceName + ":" + lineNo + ":" + msg); + warnings.add(new String(sourceName + ":" + lineNo + ":" + msg)); + } + debug( + "warning: " + listing.get(i + 1) + " at " + listing.get(i - 1)); + } + if ((matcher = undefinedExecutionLabelPattern.matcher(line)) + .matches()) { + addError( + new String(programName + ":" + 1 + ":" + matcher.group(0))); + } + if ((matcher = ifLoopSwitchNotTerminatedPattern.matcher(line)) + .matches()) { + String lineNumber = matcher.group(1); + String key = matcher.group(3); + //System.out.println("Key: "+key); + String sourceName = programName; + if (key != null + && key.trim().length() > 0 + && includes.containsKey(key)) { + sourceName = (String) includes.get(key); + } + addError( + new String( + sourceName + + ":" + + lineNumber + + ": if/Loop/Switch/ not terminated")); + } + if ((matcher = ifLoopSwitchNotTerminatedPattern90.matcher(line)) + .matches()) { + String lineNumber = matcher.group(1); + String key = matcher.group(3); + //System.out.println("Key: "+key); + String sourceName = programName; + if (key != null + && key.trim().length() > 0 + && includes.containsKey(key)) { + sourceName = (String) includes.get(key); + } + addError( + new String( + sourceName + + ":" + + lineNumber + + ": if/Loop/Switch/For not terminated")); + } + if ((matcher = fatalErrorPattern.matcher(line)).matches()) { + addError(new String(programName + ":1: FATAL ERROR ENCOUNTERED")); + } + if ((matcher = resultPattern.matcher(line)).matches()) { + resultMessage = line; + realErrors = Integer.parseInt(matcher.group(2)); + realWarnings = Integer.parseInt(matcher.group(3)); + } } private void addError(String msg) { - errors.add(msg); - - errorNo++; - + errors.add(msg); + + errorNo++; + } - + private void appendError(String msg) { - String s = (String)errors.lastElement() + "\n" + msg; - errors.setElementAt(s, errors.size()-1); + String s = (String)errors.lastElement() + "\n" + msg; + errors.setElementAt(s, errors.size()-1); } - + private void debug(String s) { - if (DEBUG) { - System.out.println(s); - } + if (DEBUG) { + System.out.println(s); + } } /** @@ -302,57 +313,57 @@ * Console -> Error patterns */ public void printGeneric(PrintStream ps) { - for (int i = 0; i < errors.size(); i++) { - ps.println(errors.get(i).toString()); - } - for (int i = 0; i < warnings.size(); i++) { - ps.println(warnings.get(i).toString()); - } - if (realErrors != errors.size() || realWarnings != warnings.size()) { - ps.println( - "Error in ListingAnalyzer: there are errors/warnings in the listing file that I didn't realize! Check listing file " - + listName - + "\nrealErrors=" - + realErrors - + " found errors=" - + errors.size() - + "\nrealWarnings=" - + realWarnings - + " found warnings=" - + warnings.size()); - } - ps.println(resultMessage.replaceAll(":", " ")); + for (int i = 0; i < errors.size(); i++) { + ps.println(errors.get(i).toString()); + } + for (int i = 0; i < warnings.size(); i++) { + ps.println(warnings.get(i).toString()); + } + if (realErrors != errors.size() || realWarnings != warnings.size()) { + ps.println( + "Error in ListingAnalyzer: there are errors/warnings in the listing file that I didn't realize! Check listing file " + + listName + + "\nrealErrors=" + + realErrors + + " found errors=" + + errors.size() + + "\nrealWarnings=" + + realWarnings + + " found warnings=" + + warnings.size()); + } + ps.println(resultMessage.replaceAll(":", " ")); } public void printGeneric() { - printGeneric(System.out); + printGeneric(System.out); } public void printListing() { - for (int i = 0; i < listing.size(); i++) { - System.out.println((String) listing.get(i)); - } + for (int i = 0; i < listing.size(); i++) { + System.out.println((String) listing.get(i)); + } } public int numberOfErrors() { - return errorNo; + return errorNo; } public int numberOfWarnings() { - return warnings.size(); + return warnings.size(); } public static void main(String[] args) throws Exception { - if (args.length != 2) { - System.out.println("ListingAnalyzer xxxxxxxxx.lst sourceName"); - System.exit(0); - } - ListingAnalyzer analyzer = new ListingAnalyzer(args[0], args[1]); - //analyzer.printListing(); - analyzer.printGeneric(); - /*********************************************************************** + if (args.length != 2) { + System.out.println("ListingAnalyzer xxxxxxxxx.lst sourceName"); + System.exit(0); + } + ListingAnalyzer analyzer = new ListingAnalyzer(args[0], args[1]); + //analyzer.printListing(); + analyzer.printGeneric(); + /*********************************************************************** * Pattern p = Pattern.compile("^\\s*\\*ERROR\\*. - * + * * ERROR* "; Matcher m = p.matcher(s); */ } |
From: Peter S. <sch...@us...> - 2007-07-02 17:48:46
|
Update of /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15926/src/java/net/sf/plb4jedit/filelocator Modified Files: ChooseFileDialog.java FileInfo.java FileList.java FileLocatorPlugin.java FileTableFormat.java OpenFileAction.java Log Message: Index: ChooseFileDialog.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/ChooseFileDialog.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- ChooseFileDialog.java 28 Jun 2005 07:00:58 -0000 1.10 +++ ChooseFileDialog.java 2 Jul 2007 17:48:44 -0000 1.11 @@ -2,7 +2,6 @@ import java.awt.Dimension; import java.awt.event.*; -import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -11,26 +10,28 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.util.Log; -import ca.odell.glazedlists.EventList; +import ca.odell.glazedlists.*; import ca.odell.glazedlists.event.ListEvent; import ca.odell.glazedlists.event.ListEventListener; -import ca.odell.glazedlists.swing.EventSelectionModel; -import ca.odell.glazedlists.swing.EventTableModel; -import ca.odell.glazedlists.swing.TableFormat; -import ca.odell.glazedlists.swing.TextFilterList; +import ca.odell.glazedlists.gui.TableFormat; +import ca.odell.glazedlists.matchers.AbstractMatcherEditor; +import ca.odell.glazedlists.matchers.Matcher; +import ca.odell.glazedlists.migrationkit.swing.TextFilterList; +import ca.odell.glazedlists.swing.*; import com.jgoodies.forms.builder.PanelBuilder; import com.jgoodies.forms.factories.ButtonBarFactory; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; +import com.jgoodies.uif.util.ComponentUtils; +import com.jgoodies.uif.util.SystemUtils; /* $Id$ - * - * Copyright (c) DAKOSY AG and Riege Software. All rights reserved. - * Use is subject to license terms. */ /** @@ -49,17 +50,18 @@ private EventSelectionModel fileSelectionModel; private EventTableModel fileTableModel; private TableFormat tableFormat; - private TextFilterList filesTextFiltered; private JTextField filterTextField; private JButton okButton; private Action okAction; private JButton cancelButton; + private JButton updateButton; private List selection; private List actionListeners = new ArrayList(); - private EventList eventList; + private FileList eventList; private JTable filesJTable; + private ExtensionSelect extensionSelect; - public ChooseFileDialog(EventList eventList, TableFormat tableFormat) { + public ChooseFileDialog(FileList eventList, TableFormat tableFormat) { this.eventList = eventList; this.tableFormat = tableFormat; initComponents(); @@ -75,16 +77,23 @@ Log.log(Log.DEBUG, this, "chooseFiles()"); makeDisposeOnEscapeKey(dialog); dialog.getRootPane().setDefaultButton(okButton); - dialog.show(); + dialog.setVisible(true); filterTextField.requestFocus(); } - public void chooseFiles(String filterText) { - Log.log(Log.DEBUG, this, "chooseFiles(" + filterText + ")"); - filterTextField.setText(filterText); - filterTextField.setCaretPosition(0); + public void chooseFiles(String extension) { + Log.log(Log.DEBUG, this, "chooseFiles(" + extension + ")"); + extensionSelect.getComboBox().setSelectedItem(extension); chooseFiles(); } + + public void setText(String text) { + filterTextField.setText(text); + } + + public void updateList() { + this.eventList.update(); + } public void dispose() { actionListeners.clear(); @@ -119,28 +128,33 @@ } private void initComponents() { - String[] filterBeanPropertiesOnFile = {"Name", "Path"}; - filesTextFiltered = new TextFilterList(eventList, - filterBeanPropertiesOnFile); + extensionSelect = new ExtensionSelect(); + FilterList extensionFilteredList = new FilterList(eventList, extensionSelect); filterTextField = new JTextField(); - filesTextFiltered.setFilterEdit(filterTextField); + final FilterList textFilteredList = new FilterList( + extensionFilteredList, new TextComponentMatcherEditor( + filterTextField, new TextFilterator() { + + public void getFilterStrings(List baseList, Object arg1) { + FileInfo file = (FileInfo) arg1; + baseList.add(file.getAbsolutePath()); + baseList.add(file.getLastModified()); + } + })); - // files table - fileTableModel = new EventTableModel(filesTextFiltered, - tableFormat); - fileSelectionModel = new EventSelectionModel(filesTextFiltered); + SortedList sortedList = new SortedList(textFilteredList); + + fileTableModel = new EventTableModel(sortedList, tableFormat); + fileSelectionModel = new EventSelectionModel(sortedList); fileSelectionModel .addListSelectionListener(new FileSelectionListener()); - filesTextFiltered.addListEventListener(new ListEventListener() { + textFilteredList.addListEventListener(new ListEventListener() { public void listChanged(ListEvent arg0) { - if (filesTextFiltered.size() > 0) { - fileSelectionModel.setSelectionInterval(0,0); + if (textFilteredList.size() > 0) { + fileSelectionModel.setSelectionInterval(0, 0); } - }}); - } - - private JPanel buildContent() { - // Result Table + } + }); filesJTable = new JTable(fileTableModel); filesJTable.setSelectionModel(fileSelectionModel); filesJTable.getColumnModel().getColumn(0).setMinWidth(30); @@ -150,8 +164,16 @@ filesJTable.getColumnModel().getColumn(1).setPreferredWidth(40); filesJTable.getColumnModel().getColumn(2).setMinWidth(100); filesJTable.getColumnModel().getColumn(2).setPreferredWidth(280); + filesJTable.getColumnModel().getColumn(3).setMinWidth(50); + filesJTable.getColumnModel().getColumn(3).setPreferredWidth(60); filesJTable.addKeyListener(new KeyHandler()); + new TableComparatorChooser(filesJTable, sortedList, false); + } + + private JPanel buildContent() { + + JScrollPane fileTableScrollPane = new JScrollPane(filesJTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); @@ -161,18 +183,48 @@ okButton = new JButton(okAction); okButton.setDefaultCapable(true); cancelButton = new JButton(new CancelAction()); + updateButton = new JButton(buildUpdateAction()); + + Action down = buildDownAction(filesJTable); + Action up = buildUpAction(filesJTable); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_KP_DOWN, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, down, + KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, up, + KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + ComponentUtils.addAction(filterTextField, okAction, KeyStroke + .getKeyStroke(KeyEvent.VK_ENTER, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + ComponentUtils.addAction(filterTextField, okAction, KeyStroke + .getKeyStroke(KeyEvent.VK_ENTER, 0), + JComponent.WHEN_FOCUSED); + // Panel FormLayout layout = new FormLayout( - "right:p, 4dlu, p:grow", // columns + "right:p, 4dlu, p:grow, 4dlu, p", // columns "p, 3dlu, fill:default:grow, 3dlu, p"); // rows PanelBuilder builder = new PanelBuilder(layout/*, new FormDebugPanel()*/); builder.setDefaultDialogBorder(); CellConstraints cc = new CellConstraints(); - builder.addLabel("Filter", cc.xy(1, 1)); - builder.add(filterTextField, cc.xy(3, 1)); - builder.add(fileTableScrollPane, cc.xyw(1, 3, 3)); - builder.add(ButtonBarFactory.buildOKCancelBar(okButton, cancelButton), - cc.xyw(1, 5, 3)); + builder.addLabel("Filter", cc.xy(1, 1)); + builder.add(filterTextField, cc.xy(3, 1)); + builder.add(extensionSelect.getComboBox(), cc.xy(5, 1)); + builder.add(fileTableScrollPane, cc.xyw(1, 3, 5)); + builder.add(ButtonBarFactory.buildHelpOKCancelBar(updateButton, okButton, cancelButton), + //buildGrowingBar(okButton, cancelButton, updateButton), + cc.xyw(1, 5, 5)); return builder.getPanel(); } @@ -224,6 +276,8 @@ closeDialog(); } } + + private class OKAction extends AbstractAction { private OKAction() { super("OK"); @@ -231,7 +285,7 @@ public void actionPerformed(ActionEvent e) { // if Ok pressed and nothing is selected selectall visible - if (fileSelectionModel.getEventList().size() == 0) { + if (fileSelectionModel.getSelected().size() == 0) { filesJTable.selectAll(); } if (actionListeners.isEmpty()) { @@ -239,7 +293,7 @@ for (Iterator iter = selection.iterator(); iter .hasNext();) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); Log.log(Log.DEBUG,this,file.getAbsolutePath()); } } @@ -256,6 +310,44 @@ } } + private AbstractAction buildUpdateAction() { + return new AbstractAction("Update Index") { + + public void actionPerformed(ActionEvent e) { + ChooseFileDialog.this.updateList(); + } + + }; + } + + private AbstractAction buildDownAction(final JTable table) { + return new AbstractAction() { + + public void actionPerformed(ActionEvent e) { + int idx = table.getSelectionModel() + .getMinSelectionIndex(); + idx++; + if (idx < table.getRowCount()) { + table.getSelectionModel().setSelectionInterval( + idx, idx); + } + } + }; + } + + private AbstractAction buildUpAction(final JTable table) { + return new AbstractAction() { + + public void actionPerformed(ActionEvent e) { + int idx = table.getSelectionModel().getMinSelectionIndex(); + idx--; + if (idx >= 0) { + table.getSelectionModel().setSelectionInterval(idx, idx); + } + } + }; + } + private void makeDisposeOnEscapeKey(final RootPaneContainer rootPane) { Action action = new AbstractAction() { public void actionPerformed(ActionEvent arg0) { @@ -317,5 +409,43 @@ } + private class ExtensionMatcher implements Matcher { + private String extension; + + public ExtensionMatcher(String ext) { + this.extension = ext; + } + + public boolean matches(Object o) { + if (o == null) + return false; + if (StringUtils.isEmpty(extension)) + return true; + FileInfo f = (FileInfo) o; + return extension.equals(f.getExtension()); + } + } + private class ExtensionSelect extends AbstractMatcherEditor implements ActionListener { + JComboBox extensionsComboBox; + + public ExtensionSelect() { +// derive the users list from the issues list + String[] exts = StringUtils.split(FileLocatorOptions + .getInstance().getExtensions()); + + extensionsComboBox = new JComboBox(exts); + extensionsComboBox.addItem(""); + extensionsComboBox.addActionListener(this); + } + + public JComboBox getComboBox() { + return extensionsComboBox; + } + + public void actionPerformed(ActionEvent e) { + Matcher newMatcher = new ExtensionMatcher((String)getComboBox().getSelectedItem()); + fireChanged(newMatcher); + } + } } \ No newline at end of file Index: OpenFileAction.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/OpenFileAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- OpenFileAction.java 25 May 2005 12:48:46 -0000 1.6 +++ OpenFileAction.java 2 Jul 2007 17:48:45 -0000 1.7 @@ -45,7 +45,7 @@ for (Iterator iter = dialog.getSelectedFiles().iterator(); iter.hasNext() && i < MAX_FILES; i++) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); buffers[i] = jEdit.openFile(null, file.getAbsolutePath()); } activePane.setBuffer(buffers[0]); Index: FileTableFormat.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileTableFormat.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- FileTableFormat.java 27 Jun 2005 16:17:56 -0000 1.3 +++ FileTableFormat.java 2 Jul 2007 17:48:45 -0000 1.4 @@ -7,17 +7,13 @@ import java.io.File; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; -import ca.odell.glazedlists.swing.TableFormat; +import ca.odell.glazedlists.gui.TableFormat; public class FileTableFormat implements TableFormat { - private String[] columnDesc = {"Name", "Ext.", "Path"}; - private File relativePath; + private String[] columnDesc = {"Name", "Ext.", "Path", "Last modified"}; - public FileTableFormat(File relativePath) { - this.relativePath = relativePath; - } - public int getColumnCount() { return columnDesc.length; } @@ -29,22 +25,18 @@ public Object getColumnValue(Object fileObj, int column) { if (fileObj == null) return null; - if (!(fileObj instanceof File)) + if (!(fileObj instanceof FileInfo)) return null; - //FileInfo fileInfo = (FileInfo) fileObj; - File file = (File) fileObj; + FileInfo file = (FileInfo) fileObj; + //File file = (File) fileObj; if (column == 0) { - return StringUtils.substringBeforeLast(file.getName(), "."); + return file.getName(); } else if (column == 1) { - return StringUtils.substringAfterLast(file.getName(), "."); + return file.getExtension(); } else if (column == 2) { - if (relativePath == null) { - return file.getPath(); - } else { - return StringUtils.substringBetween(file.getAbsolutePath(), - relativePath.getPath() + File.separator, File.separator + file.getName()); - } - + return file.getDirectory(); + } else if (column == 3) { + return file.getLastModified(); } return null; } Index: FileInfo.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileInfo.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- FileInfo.java 18 May 2005 08:48:06 -0000 1.2 +++ FileInfo.java 2 Jul 2007 17:48:44 -0000 1.3 @@ -10,6 +10,7 @@ import java.io.Serializable; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateFormatUtils; /** * @author <a href="mailto:sch...@ri...">Peter Schaefer </a> @@ -17,118 +18,49 @@ */ public class FileInfo implements Serializable, Comparable { + private static final long serialVersionUID = 1L; + private static final File relativeTo= new File(FileLocatorOptions.getInstance().getRootDir()); private String name; private String extension; private String absolutePath; - private String relativePath; - - public FileInfo() { - name = ""; - extension = ""; - absolutePath = ""; - relativePath = ""; - } + private String directory; + private String lastModified; - public FileInfo(File f, File relativeTo) { - this(); + public FileInfo(File f) { name = StringUtils.substringBeforeLast(f.getName(), "."); extension = StringUtils.substringAfterLast(f.getName(), "."); absolutePath = f.getAbsolutePath(); - if (relativeTo != null) { - relativePath = StringUtils.substringBetween(absolutePath, - relativeTo.getPath(), File.separator + f.getName()); + lastModified = DateFormatUtils.format(f.lastModified(), "yyyyMMdd HH:mm:ss"); + if (relativeTo == null) { + directory = f.getPath(); + } else { + directory = StringUtils.substringBetween(f.getAbsolutePath(), + relativeTo.getPath() + File.separator, File.separator + f.getName()); } - } - /** - * @return Returns the absolutePath. - */ public String getAbsolutePath() { return absolutePath; } - /** - * @param absolutePath - * The absolutePath to set. - */ - public void setAbsolutePath(String absolutePath) { - this.absolutePath = absolutePath; - } - - /** - * @return Returns the extension. - */ public String getExtension() { return extension; } - /** - * @param extension - * The extension to set. - */ - public void setExtension(String extension) { - this.extension = extension; - } - - /** - * @return Returns the name. - */ public String getName() { return name; } - /** - * @param name - * The name to set. - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return Returns the relativePath. - */ - public String getRelativePath() { - if (relativePath == null && absolutePath != null) { - return absolutePath; - } - return relativePath; + public String getLastModified() { + return lastModified; } - - /** - * @param relativePath - * The relativePath to set. - */ - public void setRelativePath(String relativePath) { - this.relativePath = relativePath; + + public String getDirectory() { + return directory; } - public boolean equals(Object o) { - if (! (o instanceof FileInfo)) { - return false; - } - FileInfo f = (FileInfo)o; - return StringUtils.equals(this.getAbsolutePath(), f.getAbsolutePath()); - } - public int compareTo(Object o) { - if (o == null || ! (o instanceof FileInfo)) { - return 1000; - } - if (equals(o)) { - return 0; - } - - FileInfo f = (FileInfo)o; - if (f.getExtension().equals(getExtension())) { - if (getName().equals(f.getName())) { - return getRelativePath().compareTo(f.getRelativePath()); - } else { - return getName().compareTo(f.getName()); - } - } else { - return getExtension().compareTo(f.getExtension()); - } + FileInfo fi = (FileInfo)o; + return absolutePath.compareTo(fi.getAbsolutePath()); } } \ No newline at end of file Index: FileLocatorPlugin.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileLocatorPlugin.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- FileLocatorPlugin.java 27 Jun 2005 16:17:56 -0000 1.10 +++ FileLocatorPlugin.java 2 Jul 2007 17:48:44 -0000 1.11 @@ -27,8 +27,7 @@ private static final OpenFileAction openFileAction = new OpenFileAction(); private static final FileList fileList = FileList.getInstance(); private static final ChooseFileDialog dialog = new ChooseFileDialog( - fileList, new FileTableFormat(new File(FileLocatorOptions.getInstance() - .getRootDir()))); + fileList, new FileTableFormat()); public void start() { _init(); @@ -52,9 +51,22 @@ try { StopWatch watch = new StopWatch(); watch.start(); - ObjectInputStream in = new ObjectInputStream( - new FileInputStream(fileName)); - Collection files = (LinkedList) in.readObject(); + ObjectInputStream in = null; + Collection<FileInfo> files; + try { + in = new ObjectInputStream( + new FileInputStream(fileName)); + files = (LinkedList) in.readObject(); + } catch (ClassCastException e) { + // may be caused through version update => delete old map + in.close(); + File index = new File(fileName); + index.delete(); + fileList.start(); + dialog.addActionListener(openFileAction); + setDialogSize(); + return; + } watch.stop(); fileList.setFiles(files); Log.log(Log.DEBUG, FileLocatorPlugin.class, @@ -70,10 +82,10 @@ setDialogSize(); } - private void store(Collection files) { + private void store(Collection<FileInfo> files) { final String fileName = FileLocatorOptions.getInstance() .getIndexFilename(); - LinkedList list = new LinkedList(); + LinkedList<FileInfo> list = new LinkedList(); list.addAll(files); if (StringUtils.isNotBlank(fileName)) { try { @@ -102,7 +114,7 @@ && StringUtils.contains(FileLocatorOptions.getInstance() .getExtensions(), extension)) { - dialog.chooseFiles(" ." + extension); + dialog.chooseFiles(extension); } else { dialog.chooseFiles(); } @@ -119,7 +131,7 @@ .getPath(), "."); System.out.println(searchKey); for (Iterator iter = fileList.iterator(); iter.hasNext();) { - File file = (File) iter.next(); + FileInfo file = (FileInfo) iter.next(); System.out.println(file.getName()); if (file.getName().equals(searchKey)) { jEdit.openFile(jEdit.getActiveView(), file.getAbsolutePath()); @@ -127,7 +139,8 @@ } } // nothing found - dialog.chooseFiles(searchKey); + dialog.setText(searchKey); + selectFiles(); } } Index: FileList.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/FileLocator/src/java/net/sf/plb4jedit/filelocator/FileList.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- FileList.java 27 Jun 2005 16:17:56 -0000 1.5 +++ FileList.java 2 Jul 2007 17:48:44 -0000 1.6 @@ -9,6 +9,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.filefilter.IOFileFilter; +import org.apache.commons.io.filefilter.NameFileFilter; import org.apache.commons.io.filefilter.SuffixFileFilter; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.StopWatch; @@ -24,7 +25,6 @@ */ public class FileList extends TransformedList { - private static UpdateIndexTask updateIndexTask; private static FileList INSTANCE; @@ -85,24 +85,21 @@ /** * @param files */ - public void setFiles(Collection files) { - SortedSet filesSorted = new TreeSet(); - - filesSorted.addAll(files); - + public void setFiles(Collection<FileInfo> files) { UniqueList uniqueSource = (UniqueList) source; uniqueSource.getReadWriteLock().writeLock().lock(); try { - uniqueSource.replaceAll(filesSorted); + uniqueSource.clear(); + uniqueSource.addAll(files); } finally { uniqueSource.getReadWriteLock().writeLock().unlock(); } } - public Collection getFiles() { - Collection files = new LinkedList(); + public Collection<FileInfo> getFiles() { + Collection<FileInfo> files = new LinkedList(); for (Iterator iter = source.iterator(); iter.hasNext();) { - File element = (File) iter.next(); + FileInfo element = (FileInfo) iter.next(); files.add(element); } return files; @@ -122,7 +119,7 @@ .getInstance().getExtensions()); String[] excludeDirs = StringUtils.split(FileLocatorOptions .getInstance().getExcludedDirs()); - File rootDir = new File(FileLocatorOptions.getInstance() + final File rootDir = new File(FileLocatorOptions.getInstance() .getRootDir()); String[] suffixes = new String[extensions.length]; @@ -132,19 +129,25 @@ IOFileFilter fileFilter = new SuffixFileFilter(suffixes); IOFileFilter directoryFilter = FileFilterUtils .makeCVSAware(FileFilterUtils.directoryFileFilter()); - for (int i = 0; i < excludeDirs.length; i++) { - directoryFilter = FileFilterUtils.andFileFilter( - directoryFilter, FileFilterUtils - .notFileFilter(FileFilterUtils - .nameFileFilter(excludeDirs[i]))); - } - watch.start(); + NameFileFilter excludeFilter = new NameFileFilter(excludeDirs); + directoryFilter = FileFilterUtils.andFileFilter(directoryFilter, FileFilterUtils.notFileFilter(excludeFilter)); - Collection files = FileUtils.listFiles(rootDir, fileFilter, + System.out.println("FileLocator starts scan ..."); + watch.start(); + Collection<File> files = FileUtils.listFiles(rootDir, fileFilter, directoryFilter); + + Collection<FileInfo> filesAsFileInfo = new LinkedList(); watch.stop(); - System.out.println("scan performed in " + watch.toString() + ". " + files.size() + " files matched."); - setFiles(files); + for (File f : files) { + filesAsFileInfo.add(new FileInfo(f)); + } + System.out.println("scan performed in " + watch.toString() + ". " + filesAsFileInfo.size() + " files matched."); + setFiles(filesAsFileInfo); + filesAsFileInfo.clear(); + filesAsFileInfo = null; + files.clear(); + files = null; } } |
From: Peter S. <sch...@us...> - 2007-01-08 11:19:46
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23254/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PLBCompiler.java ProcessRunner.java Log Message: debug infos Index: PLBCompiler.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PLBCompiler.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- PLBCompiler.java 5 Jan 2007 17:48:11 -0000 1.2 +++ PLBCompiler.java 8 Jan 2007 11:19:40 -0000 1.3 @@ -31,7 +31,6 @@ public PLBCompiler() throws IOException { tmp = File.createTempFile("PLBCompiler",".log"); - tmp.deleteOnExit(); plbEnv = new Properties(); } @@ -51,7 +50,7 @@ } } - public void compile(File plbSource) throws Exception { + public int compile(File plbSource) throws Exception { if (plbSource == null || !plbSource.exists()) { throw new IllegalArgumentException("PLB Source does not exist "); } @@ -61,21 +60,29 @@ String[] cmd; int i = -1; + final int ANZ_OPTS=14; if (StringUtils.isNotBlank(plbwinINIFile)) { - cmd = new String[14]; + cmd = new String[ANZ_OPTS+3]; cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); cmd[++i] = "-h"; cmd[++i] = "-i"; cmd[++i] = plbwinINIFile; } else { - cmd = new String[11]; + cmd = new String[ANZ_OPTS]; cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); } cmd[++i] = "plbcmp"; cmd[++i] = plbSource.getAbsolutePath(); cmd[++i] = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(name, ".dbs", ".plc"); - cmd[++i] = "-EP"; - cmd[++i] = "\"x header\""; + cmd[++i] = "-E=dbs"; + cmd[++i] = "E"; + cmd[++i] = "P"; + if (File.separator.equals("/")) { + cmd[++i] = "\"x header\""; + } else { + cmd[++i] = "\"x header\""; + } + cmd[++i] = "99999"; cmd[++i] = "S"; cmd[++i] = "ZH"; cmd[++i] = "ZT"; @@ -83,7 +90,10 @@ cmd[++i] = "ZV"; PrintStream devnull = new PrintStream(tmp); - ProcessRunner.exec(cmd, plbEnv, workingDir, devnull, devnull); + if (!Boolean.parseBoolean(plbEnv.getProperty("RSI_DEBUG","false"))) { + tmp.deleteOnExit(); + } + return ProcessRunner.exec(cmd, plbEnv, workingDir, devnull, devnull); } public void analyzeListing(File plbSource) throws Exception { @@ -123,7 +133,10 @@ for (int i = 0; i < args.length; i++) { System.out.println("Compiling " + args[i]); File plbSource = new File(args[i]); - compiler.compile(plbSource); + int returnCode = compiler.compile(plbSource); + if (returnCode != 0) { + System.err.println("PLB Compiler returned errorcode '" + returnCode + "'"); + } compiler.analyzeListing(plbSource); } } Index: ProcessRunner.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/ProcessRunner.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ProcessRunner.java 5 Jan 2007 16:58:13 -0000 1.1 +++ ProcessRunner.java 8 Jan 2007 11:19:40 -0000 1.2 @@ -16,10 +16,11 @@ */ public class ProcessRunner { + private ProcessRunner() { // avoid instances of this class } - + /** * execute a command via {@link Runtime.exec(String command, String envp[], File dir)} avoiding * some <a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html">traps</a> @@ -75,7 +76,7 @@ environment = new String[0]; } - if (false) { + if (Boolean.parseBoolean(envp.getProperty("RSI_DEBUG","false"))) { System.out.println("++++++++++++++ ProcessRunner debug information ++++++++++++++:"); if (workingDir != null) { System.out.println("Working directory="+workingDir.getAbsolutePath()+"\nEnvironment:"); |
From: Peter S. <sch...@us...> - 2007-01-05 17:48:15
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15735/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PLBCompiler.java Log Message: no default properties for unix Index: PLBCompiler.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PLBCompiler.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- PLBCompiler.java 5 Jan 2007 16:58:14 -0000 1.1 +++ PLBCompiler.java 5 Jan 2007 17:48:11 -0000 1.2 @@ -31,25 +31,8 @@ public PLBCompiler() throws IOException { tmp = File.createTempFile("PLBCompiler",".log"); - + tmp.deleteOnExit(); plbEnv = new Properties(); - if (File.separator.equals("/")) { - _unixDefaults(); - } - } - - - - private void _unixDefaults() { - plbEnv.setProperty("PLB_TERM", "linux"); - plbEnv.setProperty("PLB_SYSTEM", "/opt/rsi/plb"); - plbEnv.setProperty("PLB_FNC", "lower"); - plbEnv.setProperty("PLB_EOR", "LF, NOAUTO"); - plbEnv.setProperty("PLBCMP_EXT", "dbs"); - plbEnv.setProperty("PLB_PATH", - "/opt/rsi/plb:/home/schaefer/cvsroot/procars/incs/rcd:/home/schaefer/cvsroot/procars/incs/io:/home/schaefer/cvsroot/procars/incs/misc"); - plbEnv.setProperty("RSI_PLBCMD","plb"); - plbEnv.setProperty("RSI_PLCDIR","/opt/rsi/plc"); } public void usePlbWinINIFile(String wini) throws Exception { @@ -62,7 +45,7 @@ Enumeration keys = cmpenv.propertyNames(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); - if (StringUtils.isNotBlank(cmpenv.getProperty(key)) && key.toUpperCase().startsWith("RSI")) { + if (StringUtils.isNotBlank(cmpenv.getProperty(key))) { plbEnv.setProperty(key.toUpperCase(), cmpenv.getProperty(key)); } } @@ -89,10 +72,8 @@ cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); } cmd[++i] = "plbcmp"; - //cmd[++i] = name; cmd[++i] = plbSource.getAbsolutePath(); cmd[++i] = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(name, ".dbs", ".plc"); - //cmd[++i] = "-ZH ZT ZG ZV PE 99999 \"x header\" s"; cmd[++i] = "-EP"; cmd[++i] = "\"x header\""; cmd[++i] = "S"; @@ -107,7 +88,6 @@ public void analyzeListing(File plbSource) throws Exception { String listing = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(plbSource.getName(), ".dbs", ".lst"); - //ListingAnalyzer analyzer = new ListingAnalyzer(tmp.getAbsolutePath(), plbSource.getAbsolutePath()); ListingAnalyzer analyzer = new ListingAnalyzer(listing, plbSource.getAbsolutePath()); analyzer.printGeneric(); } |
From: Peter S. <sch...@us...> - 2007-01-05 16:58:17
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29703/Plb/src/java/net/sf/plb4jedit/plb Added Files: ProcessRunner.java PLBCompiler.java Log Message: added compilation support --- NEW FILE: PLBCompiler.java --- /* $Id: PLBCompiler.java,v 1.1 2007/01/05 16:58:14 schaefep Exp $ */ package net.sf.plb4jedit.plb; /* * Copyright 2001 Riege Software International, All Rights Reserved. This * software is the proprietary information of Riege Software International Use * is subject to license terms. */ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Enumeration; import java.util.Iterator; import java.util.Properties; import java.io.PrintStream; import org.apache.commons.cli.*; import org.apache.commons.lang.StringUtils; /** */ public class PLBCompiler { private Properties plbEnv; private File tmp; private String plbwinINIFile; public PLBCompiler() throws IOException { tmp = File.createTempFile("PLBCompiler",".log"); plbEnv = new Properties(); if (File.separator.equals("/")) { _unixDefaults(); } } private void _unixDefaults() { plbEnv.setProperty("PLB_TERM", "linux"); plbEnv.setProperty("PLB_SYSTEM", "/opt/rsi/plb"); plbEnv.setProperty("PLB_FNC", "lower"); plbEnv.setProperty("PLB_EOR", "LF, NOAUTO"); plbEnv.setProperty("PLBCMP_EXT", "dbs"); plbEnv.setProperty("PLB_PATH", "/opt/rsi/plb:/home/schaefer/cvsroot/procars/incs/rcd:/home/schaefer/cvsroot/procars/incs/io:/home/schaefer/cvsroot/procars/incs/misc"); plbEnv.setProperty("RSI_PLBCMD","plb"); plbEnv.setProperty("RSI_PLCDIR","/opt/rsi/plc"); } public void usePlbWinINIFile(String wini) throws Exception { plbwinINIFile = wini; } public void usePlbCompilerProperties(String cmpprops) throws Exception { Properties cmpenv = new Properties(); cmpenv.load(new FileInputStream(cmpprops)); Enumeration keys = cmpenv.propertyNames(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); if (StringUtils.isNotBlank(cmpenv.getProperty(key)) && key.toUpperCase().startsWith("RSI")) { plbEnv.setProperty(key.toUpperCase(), cmpenv.getProperty(key)); } } } public void compile(File plbSource) throws Exception { if (plbSource == null || !plbSource.exists()) { throw new IllegalArgumentException("PLB Source does not exist "); } final File workingDir = plbSource.getParentFile(); final String name = plbSource.getName(); String[] cmd; int i = -1; if (StringUtils.isNotBlank(plbwinINIFile)) { cmd = new String[14]; cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); cmd[++i] = "-h"; cmd[++i] = "-i"; cmd[++i] = plbwinINIFile; } else { cmd = new String[11]; cmd[++i] = plbEnv.getProperty("RSI_PLBCMD","plb"); } cmd[++i] = "plbcmp"; //cmd[++i] = name; cmd[++i] = plbSource.getAbsolutePath(); cmd[++i] = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(name, ".dbs", ".plc"); //cmd[++i] = "-ZH ZT ZG ZV PE 99999 \"x header\" s"; cmd[++i] = "-EP"; cmd[++i] = "\"x header\""; cmd[++i] = "S"; cmd[++i] = "ZH"; cmd[++i] = "ZT"; cmd[++i] = "ZG"; cmd[++i] = "ZV"; PrintStream devnull = new PrintStream(tmp); ProcessRunner.exec(cmd, plbEnv, workingDir, devnull, devnull); } public void analyzeListing(File plbSource) throws Exception { String listing = plbEnv.getProperty("RSI_PLCDIR") + File.separator + StringUtils.replace(plbSource.getName(), ".dbs", ".lst"); //ListingAnalyzer analyzer = new ListingAnalyzer(tmp.getAbsolutePath(), plbSource.getAbsolutePath()); ListingAnalyzer analyzer = new ListingAnalyzer(listing, plbSource.getAbsolutePath()); analyzer.printGeneric(); } public static void main(String[] args) throws Exception { CommandLineParser parser = new GnuParser(); Options options = new Options(); Option plbwinIni = OptionBuilder.withArgName("properties-file") .hasArg() .withDescription( "plbwin ini File") .create( "plbwini"); Option plbcmp = OptionBuilder.withArgName( "properties-file" ) .hasArg() .withDescription( "Configuration Properties for the PLBCompiler") .create( "plbcmp"); options.addOption(plbwinIni); options.addOption(plbcmp); CommandLine line = parser.parse( options, args ); PLBCompiler compiler = new PLBCompiler(); if (line.hasOption("plbwini")) { compiler.usePlbWinINIFile(line.getOptionValue("plbwini")); } if (line.hasOption("plbcmp")) { compiler.usePlbCompilerProperties(line.getOptionValue("plbcmp")); } args = line.getArgs(); for (int i = 0; i < args.length; i++) { System.out.println("Compiling " + args[i]); File plbSource = new File(args[i]); compiler.compile(plbSource); compiler.analyzeListing(plbSource); } } } --- NEW FILE: ProcessRunner.java --- /* $Id: ProcessRunner.java,v 1.1 2007/01/05 16:58:13 schaefep Exp $ */ package net.sf.plb4jedit.plb; import java.io.*; import java.util.Iterator; import java.util.Properties; /** * Runs Processes via Runtime..exec(..) avoiding some <a * href="www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html"> traps</a>. * * @author <a href="mailto:sch...@ri...">Peter Schaefer </a> * @version $Revision: 1.1 $ */ public class ProcessRunner { private ProcessRunner() { // avoid instances of this class } /** * execute a command via {@link Runtime.exec(String command, String envp[], File dir)} avoiding * some <a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html">traps</a> * * @param cmd (mandatory) command and its arguments. Command is element at position 0. Arguments * are optional * @return exit status of the process * * @throws IllegalArgumentException if cmd.length < 1 * @throws IOException if command cmd[0] is not found * @throws InterruptedException if the current thread is interrupted by another thread while it is waiting, then the wait is ended and an InterruptedException is thrown. */ public static int exec(String[] cmd) throws IOException, InterruptedException { return exec(cmd, null, null, null, null); } /** * execute a command via {@link Runtime.exec(String command, String envp[], File dir)} avoiding * some <a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html">traps</a> * * @param cmd (mandatory) command and its arguments. Command is element at position 0. Arguments * are optional * @param envp (optional) environment for the process executing the command * @param workingDir the working directory of the subprocess, or null if the subprocess should inherit the working directory of the current process. * @param outputStream ( * @param errorStream * @return exit status of the process * * @throws IllegalArgumentException if cmd.length < 1 * @throws IOException if command cmd[0] is not found * @throws InterruptedException if the current thread is interrupted by another thread while it is waiting, then the wait is ended and an InterruptedException is thrown. */ public static int exec(String[] cmd, Properties envp, File workingDir, PrintStream outputStream, PrintStream errorStream) throws IOException, InterruptedException { if (cmd == null || cmd.length < 1) { throw new IllegalArgumentException("invalid command specified"); } String[] environment; if (envp != null) { environment = new String[envp.size()]; int i = 0; for (Iterator it = envp.keySet().iterator(); it.hasNext();) { String key = (String) it.next(); String value = envp.getProperty(key); environment[i++] = key + "=" + value; } } else { environment = new String[0]; } if (false) { System.out.println("++++++++++++++ ProcessRunner debug information ++++++++++++++:"); if (workingDir != null) { System.out.println("Working directory="+workingDir.getAbsolutePath()+"\nEnvironment:"); } for (int i = 0; i < environment.length; i++) { System.out.println(environment[i]); } System.out.println("command line:"); for (int i = 0; i < cmd.length; i++) { System.out.print(cmd[i] + " "); } System.out.println("\n++++++++++++++ ProcessRunner debug information ++++++++++++++"); } Process process = Runtime.getRuntime().exec(cmd, environment, workingDir); if (errorStream == null) { errorStream = System.err; } if (outputStream == null) { outputStream = System.out; } StreamGobbler errorGobbler = new StreamGobbler( process.getErrorStream(), errorStream); StreamGobbler outputGobbler = new StreamGobbler(process .getInputStream(), outputStream); errorGobbler.start(); outputGobbler.start(); return process.waitFor(); } public static void main(String[] args) throws Exception { if (args.length < 1) { System.out.println("USAGE: java ProcessRunner \"cmd arg1 arg2 arg3 ...\""); System.exit(1); } int exitVal = ProcessRunner.exec(args); System.out.println("ExitValue: " + exitVal); } } /** * Solution from an <a * href="www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html">article </a> * about pitfalls running external commands from java. These "gobblers" avoid * deadlocks * * @author <a href="mailto:sch...@ri...">Peter Schaefer </a> * @version $Revision: 1.1 $ */ class StreamGobbler extends Thread { InputStream is; PrintStream out; public StreamGobbler(InputStream is, PrintStream out) { this.is = is; this.out = out; } public void run() { try { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) out.println(line); } catch (IOException ioe) { ioe.printStackTrace(); } } } |
From: Peter S. <sch...@us...> - 2007-01-05 16:58:16
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29703/Plb Modified Files: project.xml Log Message: added compilation support Index: project.xml =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/project.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- project.xml 20 May 2005 13:45:36 -0000 1.6 +++ project.xml 5 Jan 2007 16:58:14 -0000 1.7 @@ -112,6 +112,12 @@ <version>2.0</version> <jar>commons-lang-2.0.jar</jar> </dependency> + <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>1.0</version> + <jar>commons-cli-1.0.jar</jar> + </dependency> </dependencies> <!-- build information for the project --> <build> |
From: Peter S. <sch...@us...> - 2007-01-05 16:58:16
|
Update of /cvsroot/plb4jedit/plb4jedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29703 Modified Files: .classpath Log Message: added compilation support Index: .classpath =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/.classpath,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- .classpath 15 Mar 2005 10:23:22 -0000 1.5 +++ .classpath 5 Jan 2007 16:58:14 -0000 1.6 @@ -1,14 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry output="FileLocator/target/classes" kind="src" path="FileLocator/src/java"/> - <classpathentry output="Plb/target/classes" kind="src" path="Plb/src/java"/> - <classpathentry sourcepath="JRE_SRC" kind="var" path="JRE_LIB"/> - <classpathentry sourcepath="EXTCVS/jEdit" kind="var" path="MAVEN_REPO/jedit/jars/jedit.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jedit/jars/ErrorList.jar"/> - <classpathentry kind="var" path="MAVEN_REPO/jedit/jars/SideKick.jar"/> - <classpathentry sourcepath="EXTCVS/jakarta-commons/io/src/java" kind="var" path="MAVEN_REPO/commons-io/jars/commons-io-1.0.jar"/> - <classpathentry sourcepath="EXT_SRC/commons-lang/commons-lang-2.0-src.zip" kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/> - <classpathentry sourcepath="ROOT/home/schaefer/cvsroot/ext_src/glazedlists/glazedlists-0.9.4-source.zip" kind="var" path="MAVEN_REPO/com.publicobject/jars/glazedlists-0.9.4.jar"/> - <classpathentry sourcepath="SWING_SUITE/forms-1.0.4/forms-1.0.4-src.zip" kind="var" path="MAVEN_REPO/com.jgoodies/jars/forms-1.0.5.jar"/> - <classpathentry kind="output" path="target/classes"/> + <classpathentry path="FileLocator/src/java" output="FileLocator/target/classes" kind="src"/> + <classpathentry path="Plb/src/java" output="Plb/target/classes" kind="src"/> + <classpathentry sourcepath="/ROOT/opt/sun-jdk-1.5.0.07/share/src.zip" path="JRE_LIB" kind="var"/> + <classpathentry sourcepath="EXTCVS/jEdit" path="MAVEN_REPO/jedit/jars/jedit.jar" kind="var"/> + <classpathentry path="MAVEN_REPO/jedit/jars/ErrorList.jar" kind="var"/> + <classpathentry sourcepath="EXTCVS/plugins/SideKick" path="MAVEN_REPO/jedit/jars/SideKick.jar" kind="var"/> + <classpathentry sourcepath="/EXT_SRC/commons-io/commons-io-1.0-src.zip" path="MAVEN_REPO/commons-io/jars/commons-io-1.0.jar" kind="var"/> + <classpathentry sourcepath="EXT_SRC/commons-lang/commons-lang-2.0-src.zip" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar" kind="var"/> + <classpathentry sourcepath="SWING_SUITE/forms-1.0.4/forms-1.0.4-src.zip" path="MAVEN_REPO/com.jgoodies/jars/forms-1.0.5.jar" kind="var"/> + <classpathentry sourcepath="/ROOT/home/schaefer/java/glazedlists/source" path="MAVEN_REPO/glazedlists/jars/glazedlists-1.6.0_java15.jar" kind="var"/> + <classpathentry sourcepath="/EXT_SRC/commons-collections/commons-collections-2.1.1-src.zip" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.1.jar" kind="var"/> + <classpathentry sourcepath="/ROOT/home/schaefer/java/lucene-2.0.0/src/java" path="MAVEN_REPO/lucene/jars/lucene-core-2.0.1-dev.jar" kind="var"/> + <classpathentry path="MAVEN_REPO/com.jgoodies/jars/uif-1.6.0.jar" kind="var"/> + <classpathentry path="MAVEN_REPO/commons-cli/jars/commons-cli-1.0.jar" kind="var"/> + <classpathentry path="target/classes" kind="output"/> </classpath> |
From: Peter S. <sch...@us...> - 2006-01-24 17:22:45
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12119/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PlbCompletion.java Log Message: fix compile error Index: PlbCompletion.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PlbCompletion.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- PlbCompletion.java 4 Aug 2005 13:31:33 -0000 1.4 +++ PlbCompletion.java 24 Jan 2006 17:22:38 -0000 1.5 @@ -24,7 +24,7 @@ public class PlbCompletion extends SideKickCompletion { //{{{ PlbCompletion constructor public PlbCompletion(View view, SideKickParsedData data) { - this.view = view; + //this.view = view; textArea = view.getTextArea(); // this.data = data; } //}}} |
From: Peter S. <sch...@us...> - 2006-01-24 16:26:47
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17358/Plb/src/resources Modified Files: Plb.props actions.xml Log Message: Index: Plb.props =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/resources/Plb.props,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Plb.props 24 Jan 2006 14:38:16 -0000 1.4 +++ Plb.props 24 Jan 2006 16:26:39 -0000 1.5 @@ -13,7 +13,7 @@ # application menu items plb.menu.label=Plb -plb.menu=Plb - plb.open-variable-declaration plb.goto-label plb.view-includes plb.view-maxlevel.label=view maximum include level of source plb.help plb.enable-Tooltips +plb.menu=Plb - plb.open-variable-declaration plb.goto-label plb.view-includes plb.help plb.enable-Tooltips options.plb.label=Plb # action labels @@ -21,7 +21,6 @@ plb.open-variable-declaration.label=Goto variable Declaration plb.goto-label.label=Goto label definition plb.view-includes.label=View includes of source -plb.view-maxlevel.label=view maximum include level of source plb.enable-Tooltips.label=Enable Tooltips plb.help.label=Help on current word @@ -35,7 +34,6 @@ plugin.net.sf.plb4jedit.plb.PlbPlugin.menu= plb.open-variable-declaration \ plb.goto-label \ plb.view-includes \ - plb.view-maxlevel \ - \ plb.help plb.enable-Tooltips Index: actions.xml =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/resources/actions.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- actions.xml 24 Jan 2006 14:38:16 -0000 1.3 +++ actions.xml 24 Jan 2006 16:26:39 -0000 1.4 @@ -16,11 +16,6 @@ net.sf.plb4jedit.plb.PlbPlugin.printIncludeList(); </CODE> </ACTION> - <ACTION NAME="plb.get-maxlevel"> - <CODE> - Macros.message(view,"maximum include level = " + net.sf.plb4jedit.plb.PlbPlugin.getMaxLevel()); - </CODE> - </ACTION> <ACTION NAME="plb.enable-Tooltips"> <CODE> net.sf.plb4jedit.plb.PlbPlugin.enableToolTips(); |
From: Peter S. <sch...@us...> - 2006-01-24 16:26:29
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17184/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PlbPlugin.java Include.java IncludeCache.java Log Message: update includes if they changed in cache Index: IncludeCache.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/IncludeCache.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- IncludeCache.java 22 Nov 2004 08:35:51 -0000 1.2 +++ IncludeCache.java 24 Jan 2006 16:26:20 -0000 1.3 @@ -2,6 +2,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.Date; import java.util.Map; import java.util.Set; import java.util.WeakHashMap; @@ -17,6 +18,7 @@ public class IncludeCache { private static int MAX_ENTRY = 1000; Map cache; + Map cacheEntryTimes; /** singleton instance of this instance */ private static IncludeCache instance; @@ -24,6 +26,7 @@ private IncludeCache() { // TODO handle MAX_ENTRY cache = new WeakHashMap(MAX_ENTRY); + cacheEntryTimes = new WeakHashMap(MAX_ENTRY); } /** @@ -52,28 +55,34 @@ IOException { if (cache.containsKey(absolutePath)) { - return (Include) cache.get(absolutePath); - } else { - Include inc = new Include(absolutePath); - Log.log(Log.DEBUG, this, "add entry no " + cache.size() + " " - + absolutePath); - cache.put(absolutePath, inc); + Include inc = (Include) cache.get(absolutePath); + Date entryTime = (Date)cacheEntryTimes.get(inc); + if (inc.getFile().lastModified() > entryTime.getTime()) { + inc = newEntry(absolutePath); + } return inc; + } else { + return newEntry(absolutePath); } } + + private Include newEntry(String absolutePath) throws FileNotFoundException, IOException { + Include inc = new Include(absolutePath); + Log.log(Log.DEBUG, this, "add entry no " + cache.size() + " " + + absolutePath); + cache.put(absolutePath, inc); + cacheEntryTimes.put(inc,new Date()); + return inc; + } public Include getBySource(PlbSource source) throws FileNotFoundException, IOException { - if (cache.containsKey(source.getPath())) { - return (Include) cache.get(source.getPath()); - } else { - Include inc = new Include(source); - Log.log(Log.DEBUG, this, "add entry no " + cache.size() + " " - + source.getPath()); - cache.put(source.getPath(), inc); - return inc; + if (source == null || source.getPath() == null || source.getPath().length() == 0) { + Log.log(Log.ERROR, this, "invalid source argument " + source); + throw new IllegalArgumentException("invalid source argument " + source); } + return getByPath(source.getPath()); } /** @@ -93,5 +102,10 @@ public int getSize() { return cache.size(); } + + public void clear() { + cache.clear(); + cacheEntryTimes.clear(); + } } \ No newline at end of file Index: PlbPlugin.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PlbPlugin.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- PlbPlugin.java 24 Jan 2006 14:38:16 -0000 1.6 +++ PlbPlugin.java 24 Jan 2006 16:26:20 -0000 1.7 @@ -197,6 +197,7 @@ max = level; } } + jEdit.getActiveView().getStatus().setMessage("max level = " + max); return max; } @@ -232,9 +233,7 @@ sdata = SideKickParsedData.getParsedData(view); if (sdata == null || !(sdata instanceof PlbParsedData)) { view.getStatus().setMessage("Buffer not parsed. Parse first."); - Log - .log(Log.DEBUG, jEdit.getPlugin("Plb"), - " no parsed data?!"); + Log.log(Log.DEBUG, jEdit.getPlugin("Plb")," no parsed data?!"); return null; } } Index: Include.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/Include.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Include.java 28 Jun 2005 07:01:12 -0000 1.4 +++ Include.java 24 Jan 2006 16:26:20 -0000 1.5 @@ -48,6 +48,7 @@ IOException { inc = new File(absolutePath); + if (!inc.exists()) { throw new FileNotFoundException("not a valid include " + absolutePath); @@ -56,18 +57,6 @@ scan(source); } - protected Include(PlbSource source) throws FileNotFoundException, - IOException - { - inc = new File(source.getPath()); - if (!inc.exists()) { - throw new FileNotFoundException("not a valid include " - + source.getPath()); - } - - scan(source); - } - /** * gives access to Include Instances via an IncludeCache. * |
From: Peter S. <sch...@us...> - 2006-01-24 16:26:29
|
Update of /cvsroot/plb4jedit/plb4jedit/src/jedit/console/commando In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17184/src/jedit/console/commando Modified Files: plbcmp.xml Log Message: update includes if they changed in cache Index: plbcmp.xml =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/src/jedit/console/commando/plbcmp.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- plbcmp.xml 24 Jan 2006 14:38:16 -0000 1.4 +++ plbcmp.xml 24 Jan 2006 16:26:20 -0000 1.5 @@ -50,8 +50,10 @@ </COMMAND> <COMMAND SHELL="System" CONFIRM="FALSE"> if (!isInclude) { - if (net.sf.plb4jedit.plb.PlbPlugin.getMaxLevel() > 3) { - Macros.error(view,"includes nested too deeply for PLB 8.5 !"); + int maxLevel = net.sf.plb4jedit.plb.PlbPlugin.getMaxLevel(); + if ( maxLevel > 4) { + Macros.error(view,"includes nested too deeply for PLB 8.5 ! (level="+ maxLevel + ")"); + return; } } ""; |
From: Peter S. <sch...@us...> - 2006-01-24 14:38:39
|
Update of /cvsroot/plb4jedit/plb4jedit/src/jedit/console/commando In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4369/src/jedit/console/commando Modified Files: plbcmp.xml Log Message: includes listing and includes nested too deeply check Index: plbcmp.xml =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/src/jedit/console/commando/plbcmp.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- plbcmp.xml 17 Nov 2003 09:31:27 -0000 1.3 +++ plbcmp.xml 24 Jan 2006 14:38:16 -0000 1.4 @@ -7,13 +7,16 @@ <UI> <CHOICE LABEL="Source to compile" VARNAME="programName" DEFAULT="actualBuffer"> <OPTION LABEL="Actual Buffer" VALUE="actualBuffer"/> + <OPTION LABEL="Really Buffer" VALUE="reallyBuffer"/> <OPTION LABEL="last program" VALUE="lastProgram" /> </CHOICE> <!--<ENTRY LABEL="Classpath to rsiintern und jakarta-regexp" VARNAME="classpath" EVAL="jEdit.getProperty("rsi.cp.listinganalyzer")"/>--> - <ENTRY LABEL="plbwin.ini file" VARNAME="wininiFile" EVAL="jEdit.getProperty("rsi.plb.winini")"/> - <ENTRY LABEL="PLB_PATH" VARNAME="plbPath" EVAL="jEdit.getProperty("rsi.plb.path") == null ? getenv("PLB_PATH") : jEdit.getProperty("rsi.plb.path")"/> - <TOGGLE LABEL="debug info" VARNAME="debug" EVAL="Boolean.valueOf(jEdit.getProperty("rsi.plbcmp.debug")).booleanValue()"/> - <TOGGLE LABEL="assertion checks" VARNAME="assert" EVAL="Boolean.valueOf(jEdit.getProperty("rsi.plbcmp.assert")).booleanValue()"/> + <FILE_ENTRY LABEL="plbwin.ini file" VARNAME="wininiFile" EVAL="jEdit.getProperty("rsi.plb.winini")"/> + <DIR_ENTRY LABEL="Compile to" VARNAME="plcdir" EVAL="jEdit.getProperty("rsi.dir.plc")"/> + <ENTRY LABEL="PLB_PATH" VARNAME="plbPath" EVAL="jEdit.getProperty("rsi.plb.path") == null ? getenv("PLB_PATH") : jEdit.getProperty("rsi.plb.path")"/> + <DIR_ENTRY LABEL="Path to incs_h" VARNAME="incs_h" EVAL="jEdit.getProperty("rsi.plbcmp.incs_h")"/> + <TOGGLE LABEL="Compile with incs_h" VARNAME="incs_hToggle" EVAL="Boolean.valueOf(jEdit.getProperty("rsi.plbcmp.incs_hToggle")).booleanValue()"/> + <TOGGLE LABEL="debug info" VARNAME="debug" EVAL="Boolean.valueOf(jEdit.getProperty("rsi.plbcmp.debug")).booleanValue()"/> </UI> <COMMANDS> <COMMAND SHELL="System" CONFIRM="FALSE"> @@ -46,14 +49,36 @@ s; </COMMAND> <COMMAND SHELL="System" CONFIRM="FALSE"> + if (!isInclude) { + if (net.sf.plb4jedit.plb.PlbPlugin.getMaxLevel() > 3) { + Macros.error(view,"includes nested too deeply for PLB 8.5 !"); + } + } + ""; + </COMMAND> + <COMMAND SHELL="System" CONFIRM="FALSE"> jEdit.setProperty("rsi.plbcmp.debug",String.valueOf(debug)); - jEdit.setProperty("rsi.plbcmp.assert",String.valueOf(assert)); <!--jEdit.setProperty("rsi.cp.listinganalyzer",classpath);--> jEdit.setProperty("rsi.plb.winini",wininiFile); + jEdit.setProperty("rsi.dir.plc",plcdir); + jEdit.setProperty("rsi.plbcmp.incs_h",incs_h); + jEdit.setProperty("rsi.plbcmp.incs_hToggle",String.valueOf(incs_hToggle)); + if (!plbPath.equals(jEdit.getProperty("rsi.plb.path"))) { jEdit.setProperty("rsi.plb.path",plbPath); - setenv("PLB_PATH",plbPath); } + + //Macros.message(view,incs_hToggle); + + if (incs_hToggle) { + if (File.separator.equals("/")) { //unix + plbPath = incs_h + ":" + plbPath; + } else { + plbPath = incs_h + ";" + plbPath; + } + } + setenv("PLB_PATH",plbPath); + String sourceName = buffer.getPath(); if (programName.equals("lastProgram")) { sourceName = jEdit.getProperty("rsi.plb.cmp.lastProgram"); @@ -114,7 +139,7 @@ } if (File.separator.equals("/")) { //unix - cmd.append("bash -c 'plb plbcmp " + pureSource + extension + " "); + cmd.append("bash -c '/opt/rsi/plb/plb plbcmp " + pureSource + extension + " "); } else { // windows cmd.append("plbwin "); if (wininiFile != null && wininiFile.length() > 0) { @@ -123,15 +148,12 @@ cmd.append(" plbcmp " + pureSource + extension + " " ); } - String assertOption = ""; - if (assert) { assertOption = "Vcassert=1"; } - if (File.separator.equals("/")) { //unix cmd.append(plcdir + "/" + pureSource + ".plc " ); - cmd.append(" -E=dbs ZH VOS=002 " + assertOption +" ZT ZG PE \\\\\"header\\\\\" 99999 "); + cmd.append(" -E=dbs ZH ZT ZG PE \\\\\"header\\\\\" 99999 "); } else { cmd.append(plcdir + "\\" + pureSource + ".plc " ); - cmd.append(" -ZH VOS=003 " + assertOption +" ZT ZG PE 99999 \"x header\" "); + cmd.append(" -ZH ZT ZG PE 99999 \"x header\" "); } if (debug) { cmd.append(" s"); } @@ -151,13 +173,9 @@ listing = listing.substring(0,listing.length()-4) + ".lst"; } if (File.separator.equals("/")) { //unix - classpath = jEdit.getSettingsDirectory() + "/jars/" + "jakarta-regexp-1.2.jar" - + ":" - +jEdit.getSettingsDirectory() + "/jars/" + "Plb-0.1.jar"; + classpath = jEdit.getSettingsDirectory() + "/jars/" + "Plb-0.2.jar"; } else { - classpath = jEdit.getSettingsDirectory() + "/jars/" + "jakarta-regexp-1.2.jar" - + ";" - +jEdit.getSettingsDirectory() + "/jars/" + "Plb-0.1.jar"; + classpath = "\"" + jEdit.getSettingsDirectory() + "/jars/" + "Plb-0.2.jar \""; } cmd = new StringBuffer("java -cp " + classpath + " net.sf.plb4jedit.plb.ListingAnalyzer " + listing + " " + sourceName); if(isInclude){ |
From: Peter S. <sch...@us...> - 2006-01-24 14:38:32
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4369/Plb/src/java/net/sf/plb4jedit/plb Modified Files: PlbPlugin.java PlbParser.java PlbSource.java ResourceManager.java Log Message: includes listing and includes nested too deeply check Index: ResourceManager.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/ResourceManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ResourceManager.java 20 Oct 2005 13:50:17 -0000 1.5 +++ ResourceManager.java 24 Jan 2006 14:38:16 -0000 1.6 @@ -22,7 +22,9 @@ */ public class ResourceManager { private PathBroker pathBroker; - private Set includes; + private List includes; + + private Map includeLevelMap; private TreeMap variables; private TreeMap labels; private static IncludeCache cache; @@ -45,27 +47,18 @@ public ResourceManager(String plbPath, PlbSource program) { cache = IncludeCache.getInstance(); - includes = new TreeSet(); + includeLevelMap = new TreeMap(); + includes = new ArrayList(); variables = new TreeMap(); labels = new TreeMap(); pathBroker = new PathBroker(plbPath, program.getPath()); fillOwn(program); - resolveIncludes(); } - private void resolveIncludes() { - Stack todo = new Stack(); - for (Iterator it = includes.iterator(); it.hasNext();) { - todo.push(it.next()); - } - while (!todo.isEmpty()) { - handleOneInclude(todo); - } - } - - private void handleOneInclude(Stack todo) { - String incPath = (String) todo.pop(); + private void scanInclude(String incPath, Integer includeLevel) { Include inc; + includes.add(incPath); + includeLevelMap.put(incPath, includeLevel); try { inc = cache.getByPath(incPath); } catch (FileNotFoundException e) { @@ -88,14 +81,17 @@ + e1.getMessage() + incPath + "/" + next); jEdit.getActiveView().getStatus().setMessage( "Error " + incPath + "/" + next); - return; + continue; } - if (!includes.contains(id)) { - todo.push(id); - includes.add(id); + if (!includeLevelMap.containsKey(id)) { + scanInclude(id, increment(includeLevel)); } } } + + private Integer increment(Integer i) { + return (new Integer(i.intValue()+1)); + } /** * searches for a Variable name and returns a Variable object which gives @@ -124,22 +120,6 @@ } private void fillOwn(PlbSource source) { - for (Iterator it = source.getIncludes().iterator(); it.hasNext();) { - SourceLine line = (SourceLine) it.next(); - File incFile; - try { - incFile = pathBroker.searchInclude(line.getRest()); - } catch (FileNotFoundException e) { - Log.log(Log.ERROR, this, "fillOwn: " + e.getMessage() + "\n" - + line.getRest() + "/" + line.getLine() + "\nin " - + source.getPath() + "/" + pathBroker.getPathElements()); - jEdit.getActiveView().getStatus().setMessage( - "Error: can't find " + line.getRest()); - return; - } - String absPath = incFile.getAbsolutePath(); - includes.add(absPath); - } for (Iterator it = source.getLabels().iterator(); it.hasNext();) { SourceLine line = (SourceLine) it.next(); String label = line.getLabel(); @@ -156,14 +136,44 @@ .getRest())); } + Integer eins = new Integer(1); + for (Iterator it = source.getIncludes().iterator(); it.hasNext();) { + SourceLine line = (SourceLine) it.next(); + File incFile; + try { + incFile = pathBroker.searchInclude(line.getRest()); + } catch (FileNotFoundException e) { + Log.log(Log.ERROR, this, "fillOwn: " + e.getMessage() + "\n" + + line.getRest() + "/" + line.getLine() + "\nin " + + source.getPath() + "/" + pathBroker.getPathElements()); + jEdit.getActiveView().getStatus().setMessage( + "Error: can't find " + line.getRest()); + return; + } + String absPath = incFile.getAbsolutePath(); + scanInclude(absPath, eins); + } } /** * @return a set of inlcudes includes by this file. */ - public Set getIncludes() { + public List getIncludes() { return includes; } + + /** + * return the level of the given include or -1 if include is not in current resource. + * @param incPath absolute path of include name + * @return level of include or -1 if given include is not part of resource + */ + public int getIncludeLevel(String incPath) { + if (includeLevelMap.containsKey(incPath)) { + return ((Integer)includeLevelMap.get(incPath)).intValue(); + } else { + return -1; + } + } /** * @return containing all labels defined in the source file and its includes Index: PlbPlugin.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PlbPlugin.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- PlbPlugin.java 28 Jun 2005 07:01:12 -0000 1.5 +++ PlbPlugin.java 24 Jan 2006 14:38:16 -0000 1.6 @@ -1,5 +1,10 @@ package net.sf.plb4jedit.plb; +import java.awt.TextArea; +import java.io.File; +import java.util.Iterator; +import java.util.List; +import java.util.Set; import java.util.Vector; import org.gjt.sp.jedit.*; @@ -13,21 +18,23 @@ /** * jEdit plugin to add Plb-specific enhancements to jEdit: * <ul> - * <li>SideKick structure view</li> - * <li>PlbParser, which gives "goto variable/label declaration" functionality</li> - * </ul> + * <li>SideKick structure view</li> + * <li>PlbParser, which gives "goto variable/label declaration" functionality + * </li> + * </ul> + * Plans/TODO for jEdit 4.2. Port to new plugin architecture. Use new version of + * SideKick-Plugin which gives easy to perform code-completion. * - * Plans/TODO for jEdit 4.2. Port to new plugin architecture. Use new version of SideKick-Plugin - * which gives easy to perform code-completion. - * - * @author Peter Schaefer + * @author Peter Schaefer */ public class PlbPlugin extends EBPlugin { - - /** prefix to lookup properties in Plb.props*/ + + public static final int MAX_LEVEL = 4; + /** prefix to lookup properties in Plb.props */ public final static String PROPERTY_PREFIX = "plugin.Plb."; /** singletion PlbParser instance for SideKick-Plugin */ public static final PlbParser PLB_PARSER_INSTANCE = new PlbParser("plb"); + /** jEdit plugin architecture: called on start-up to initialize plugin */ public void start() { SideKickPlugin.registerParser(PLB_PARSER_INSTANCE); @@ -36,31 +43,34 @@ /** jEdit plugin architecture: called on shutdown */ public void stop() { SideKickPlugin.unregisterParser(PLB_PARSER_INSTANCE); - + } /** - * creates Plugin menu entries from properties in Plb.props: - * plb.menu.label=Plb - * plb.menu=Plb - plb.open-variable-declaration plb.goto-label - * - * @param menuItems param - */ + * creates Plugin menu entries from properties in Plb.props: + * plb.menu.label=Plb plb.menu=Plb - plb.open-variable-declaration + * plb.goto-label + * + * @param menuItems + * param + */ public void createMenuItems(Vector menuItems) { menuItems.addElement(GUIUtilities.loadMenu("plb.menu")); } /** - * jEdit plugin architecture: handle messages (e.g. buffer save, etc) + * jEdit plugin architecture: handle messages (e.g. buffer save, etc) */ public void handleMessage(EBMessage msg) { } /** - * get current Word from the textarea of the parameter view. - * recognizes $ and # as belonging to a word - * @param view to handle - * @return the word where the cursor stands in the textarea + * get current Word from the textarea of the parameter view. recognizes $ + * and # as belonging to a word + * + * @param view + * to handle + * @return the word where the cursor stands in the textarea */ private static String getCurrentWord(View view) { JEditTextArea textarea = view.getTextArea(); @@ -84,20 +94,18 @@ if (offset == textarea.getLineLength(line)) offset--; - int wordStart = - TextUtilities.findWordStart(lineText, offset, noWordSep); - int wordEnd = - TextUtilities.findWordEnd(lineText, offset + 1, noWordSep); + int wordStart = TextUtilities + .findWordStart(lineText, offset, noWordSep); + int wordEnd = TextUtilities + .findWordEnd(lineText, offset + 1, noWordSep); return lineText.substring(wordStart, wordEnd); } /** - * opens the variable definition in a new buffer. - * The lookup is performed with the word where the cursor stands. - * If nothing is found or on errors stati are shown in the status bar. - * - * Is linked with the action open-variable-declaration, see actions.xml. - * + * opens the variable definition in a new buffer. The lookup is performed + * with the word where the cursor stands. If nothing is found or on errors + * stati are shown in the status bar. Is linked with the action + * open-variable-declaration, see actions.xml. */ public static void openVariableDeclaration() { Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), "openVariableDeclaration()"); @@ -122,13 +130,13 @@ Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), " nothing found"); return; } - openBuffer(view,var.getSource(),var.getLineno()-1); + openBuffer(view, var.getSource(), var.getLineno() - 1); } /** - * goes to the position where the label under the cursor is defined. - * Opens this position in a new buffer. If nothing is found or an error occrus - * a status is shown in the status bar. + * goes to the position where the label under the cursor is defined. Opens + * this position in a new buffer. If nothing is found or an error occrus a + * status is shown in the status bar. */ public static void gotoLabel() { Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), "gotoLabelDefinition()"); @@ -154,27 +162,67 @@ Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), " nothing found"); return; } - openBuffer(view,label.getSource(),label.getLineno()-1); + openBuffer(view, label.getSource(), label.getLineno() - 1); + } + + public static void printIncludeList() { + Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), "printIncludeList()"); + View view = jEdit.getActiveView(); + ResourceManager resource = getResource(view); + Buffer includeBuffer = jEdit.newFile(view); + + StringBuffer includeList = new StringBuffer(); + for (Iterator iter = resource.getIncludes().iterator(); iter.hasNext();) { + String incPath = (String) iter.next(); + final int level = resource.getIncludeLevel(incPath); + for(int i = 1; i < level; i++) { + includeList.append("\t"); + } + includeList.append(incPath); + for(int i = 0; i <= MAX_LEVEL-level+2; i++) { + includeList.append("\t"); + } + includeList.append(level+"\n"); + } + view.getTextArea().setText(includeList.toString()); + } + + public static int getMaxLevel() { + Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), "printIncludeList()"); + ResourceManager resource = getResource(jEdit.getActiveView()); + int max = 0; + for (Iterator iter = resource.getIncludes().iterator(); iter.hasNext();) { + int level = resource.getIncludeLevel((String)iter.next()); + if (level > max) { + max = level; + } + } + return max; + } + + public static void enableToolTips() { + jEdit.getActiveView().getTextArea().getPainter() + .addExtension(new PlbTextAreaExtension()); } /** * helper to get the ResourceManager of the actual buffer in the given view. - * The resource-manager can be accessed from the PlbSource, which is stored in - * PlbParsedData, a subclass of SideKickParsedData, which can be received from - * the SideKickPlugin.<br/> - * The PlbParsedData can only be received if the buffer was parsed by the the SideKickPlugin - * before, so if buffer was not parsed, parsing is performed first. - * @param view to handle + * The resource-manager can be accessed from the PlbSource, which is stored + * in PlbParsedData, a subclass of SideKickParsedData, which can be received + * from the SideKickPlugin. <br/>The PlbParsedData can only be received if + * the buffer was parsed by the the SideKickPlugin before, so if buffer was + * not parsed, parsing is performed first. + * + * @param view + * to handle * @return resource-manager belonging to the view actual buffer. */ private static ResourceManager getResource(View view) { Buffer buffer = view.getBuffer(); if (!buffer.getMode().getName().equals("plb")) { view.getStatus().setMessage("no plb buffer"); - Log.log( - Log.DEBUG, - jEdit.getPlugin("Plb"), - " not in plb mode: " + buffer.getMode().getName()); + Log.log(Log.DEBUG, jEdit.getPlugin("Plb"), " not in plb mode: " + + buffer.getMode().getName()); return null; } SideKickParsedData sdata = SideKickParsedData.getParsedData(view); @@ -184,23 +232,23 @@ sdata = SideKickParsedData.getParsedData(view); if (sdata == null || !(sdata instanceof PlbParsedData)) { view.getStatus().setMessage("Buffer not parsed. Parse first."); - Log.log( - Log.DEBUG, - jEdit.getPlugin("Plb"), - " no parsed data?!"); + Log + .log(Log.DEBUG, jEdit.getPlugin("Plb"), + " no parsed data?!"); return null; } } PlbParsedData data = (PlbParsedData) sdata; ResourceManager resource; - resource = - data.getSource().getResources( - jEdit.getProperty("rsi.plb.path")); + resource = data.getSource().getResources( + jEdit.getProperty("rsi.plb.path")); return resource; } - - private static void openBuffer(final View view, String path, final int lineNo) { + + private static void openBuffer(final View view, String path, + final int lineNo) + { final Buffer buffer; if (jEdit.getBuffer(path) != null) { buffer = jEdit.getBuffer(path); @@ -214,10 +262,10 @@ public void run() { // new in 4.2 view.goToBuffer(buffer); view.setBuffer(buffer); - view.getTextArea().moveCaretPosition(buffer.getLineStartOffset(lineNo)); + view.getTextArea().moveCaretPosition( + buffer.getLineStartOffset(lineNo)); } }); } - - + } Index: PlbParser.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PlbParser.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- PlbParser.java 6 Jan 2004 17:57:46 -0000 1.2 +++ PlbParser.java 24 Jan 2006 14:38:16 -0000 1.3 @@ -35,7 +35,7 @@ // taken from super class public boolean supportsCompletion() { - return false; + return true; } // taken from super class @@ -63,6 +63,7 @@ DefaultErrorSource errorSource) { Log.log(Log.DEBUG, this, "parse"); String[] text; + try { buffer.readLock(); Index: PlbSource.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/PlbSource.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- PlbSource.java 28 Jun 2005 07:01:12 -0000 1.4 +++ PlbSource.java 24 Jan 2006 14:38:16 -0000 1.5 @@ -102,7 +102,7 @@ private void sortLists() { Collections.sort(vars, SourceLine.LABEL_ORDERED); - Collections.sort(includes, SourceLine.REST_ORDERED); + //Collections.sort(includes, SourceLine.REST_ORDERED); Collections.sort(labels, SourceLine.LABEL_ORDERED); } |
From: Peter S. <sch...@us...> - 2006-01-24 14:38:32
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4369/Plb/src/resources Modified Files: Plb.props actions.xml Log Message: includes listing and includes nested too deeply check Index: Plb.props =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/resources/Plb.props,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Plb.props 6 Jan 2004 17:59:46 -0000 1.3 +++ Plb.props 24 Jan 2006 14:38:16 -0000 1.4 @@ -13,13 +13,16 @@ # application menu items plb.menu.label=Plb -plb.menu=Plb - plb.open-variable-declaration plb.goto-label plb.help +plb.menu=Plb - plb.open-variable-declaration plb.goto-label plb.view-includes plb.view-maxlevel.label=view maximum include level of source plb.help plb.enable-Tooltips options.plb.label=Plb # action labels plb.toggle.label=Plb plb.open-variable-declaration.label=Goto variable Declaration plb.goto-label.label=Goto label definition +plb.view-includes.label=View includes of source +plb.view-maxlevel.label=view maximum include level of source +plb.enable-Tooltips.label=Enable Tooltips plb.help.label=Help on current word # Modes where xml parsing can to be performed @@ -31,5 +34,8 @@ # for jEdit 4.2 plugin.net.sf.plb4jedit.plb.PlbPlugin.menu= plb.open-variable-declaration \ plb.goto-label \ + plb.view-includes \ + plb.view-maxlevel \ - \ plb.help + plb.enable-Tooltips Index: actions.xml =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/resources/actions.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- actions.xml 7 Nov 2003 17:27:39 -0000 1.2 +++ actions.xml 24 Jan 2006 14:38:16 -0000 1.3 @@ -11,6 +11,21 @@ net.sf.plb4jedit.plb.PlbPlugin.gotoLabel(); </CODE> </ACTION> + <ACTION NAME="plb.view-includes"> + <CODE> + net.sf.plb4jedit.plb.PlbPlugin.printIncludeList(); + </CODE> + </ACTION> + <ACTION NAME="plb.get-maxlevel"> + <CODE> + Macros.message(view,"maximum include level = " + net.sf.plb4jedit.plb.PlbPlugin.getMaxLevel()); + </CODE> + </ACTION> + <ACTION NAME="plb.enable-Tooltips"> + <CODE> + net.sf.plb4jedit.plb.PlbPlugin.enableToolTips(); + </CODE> + </ACTION> <ACTION NAME="plb.help"> <CODE> textArea.selectWord(); |
From: Peter S. <sch...@us...> - 2005-10-20 13:50:26
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6881/Plb/src/java/net/sf/plb4jedit/plb Modified Files: ResourceManager.java Log Message: search for labels and variables case insensitive Index: ResourceManager.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/ResourceManager.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ResourceManager.java 28 Jun 2005 07:01:12 -0000 1.4 +++ ResourceManager.java 20 Oct 2005 13:50:17 -0000 1.5 @@ -107,7 +107,7 @@ * found. */ public Variable searchVariable(String varname) { - return (Variable) getVariables().get(varname); + return (Variable) getVariables().get(varname.toLowerCase()); } /** @@ -120,7 +120,7 @@ * found. */ public Label searchLabel(String label) { - return (Label) getLabels().get(label); + return (Label) getLabels().get(label.toLowerCase()); } private void fillOwn(PlbSource source) { |
From: Peer B. <am...@us...> - 2005-08-25 09:21:13
|
Update of /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25712/Plb/src/java/net/sf/plb4jedit/plb Modified Files: ListingAnalyzer.java Log Message: Added new RE for plb90-loop-error Index: ListingAnalyzer.java =================================================================== RCS file: /cvsroot/plb4jedit/plb4jedit/Plb/src/java/net/sf/plb4jedit/plb/ListingAnalyzer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ListingAnalyzer.java 8 Jul 2005 09:16:14 -0000 1.4 +++ ListingAnalyzer.java 25 Aug 2005 09:21:06 -0000 1.5 @@ -17,6 +17,9 @@ import java.util.regex.Pattern; /** * $Log$ + * Revision 1.5 2005/08/25 09:21:06 ampeer + * Added new RE for plb90-loop-error + * * Revision 1.4 2005/07/08 09:16:14 schaefep * recognize a-z as include key; new feature in PLB 9.0 * @@ -60,6 +63,7 @@ private Pattern locateErrorPattern; private Pattern undefinedExecutionLabelPattern; private Pattern ifLoopSwitchNotTerminatedPattern; + private Pattern ifLoopSwitchNotTerminatedPattern90; private Pattern lastWordPattern; private Pattern fatalErrorPattern; private Pattern resultPattern; @@ -125,6 +129,9 @@ ifLoopSwitchNotTerminatedPattern = Pattern.compile( "^IF/LOOP/SWITCH statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); + ifLoopSwitchNotTerminatedPattern90 = + Pattern.compile( + "^IF/LOOP/SWITCH/FOR statement at line \\((\\d+)(\\.([ ,a-zA-Z]{1,2}))?\\) not terminated\\..*$"); lastWordPattern = Pattern.compile("\\.*([a-zA-Z0-9#]+)$"); fatalErrorPattern = Pattern.compile("\\.*FATAL ERROR ENCOUNTERED.*$"); resultPattern = @@ -243,6 +250,24 @@ + lineNumber + ": if/Loop/Switch/ not terminated")); } + if ((matcher = ifLoopSwitchNotTerminatedPattern90.matcher(line)) + .matches()) { + String lineNumber = matcher.group(1); + String key = matcher.group(3); + //System.out.println("Key: "+key); + String sourceName = programName; + if (key != null + && key.trim().length() > 0 + && includes.containsKey(key)) { + sourceName = (String) includes.get(key); + } + addError( + new String( + sourceName + + ":" + + lineNumber + + ": if/Loop/Switch/For not terminated")); + } if ((matcher = fatalErrorPattern.matcher(line)).matches()) { addError(new String(programName + ":1: FATAL ERROR ENCOUNTERED")); } |