From 950a8b93030a16341d1763f62afe5201292f90db Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Wed, 27 May 2015 18:12:42 -0700 Subject: [PATCH] cleanup --- annotations/ExtractInterface.java | 10 - annotations/IfaceExtractorProcessor.java | 68 ----- annotations/InterfaceExtractorProcessor.java | 60 ---- .../InterfaceExtractorProcessorFactory.java | 23 -- annotations/Multiplier.java | 20 -- .../TableCreationProcessorFactory.java | 101 ------- betools/__init__.py | 6 - betools/cmdline.py | 38 --- betools/ruler.py | 18 -- betools/test/basic.py | 11 - betools/visitdir.py | 17 -- ...ronizationComparisons-original-fixed.javaz | 258 ------------------ go.bat | 4 - io/StoreCADState.java | 106 ------- net/mindview/atunit/AtUnitRemover.java | 66 ----- net/mindview/util/test.txt | 82 ------ net/mindview/util/test2.txt | 82 ------ patterns/trash/FillableArrayList.java | 14 - 18 files changed, 984 deletions(-) delete mode 100644 annotations/ExtractInterface.java delete mode 100644 annotations/IfaceExtractorProcessor.java delete mode 100644 annotations/InterfaceExtractorProcessor.java delete mode 100644 annotations/InterfaceExtractorProcessorFactory.java delete mode 100644 annotations/Multiplier.java delete mode 100644 annotations/database/TableCreationProcessorFactory.java delete mode 100644 betools/__init__.py delete mode 100644 betools/cmdline.py delete mode 100644 betools/ruler.py delete mode 100644 betools/test/basic.py delete mode 100644 betools/visitdir.py delete mode 100644 concurrency/originalSynchCompare/SynchronizationComparisons-original-fixed.javaz delete mode 100644 go.bat delete mode 100644 io/StoreCADState.java delete mode 100644 net/mindview/atunit/AtUnitRemover.java delete mode 100644 net/mindview/util/test.txt delete mode 100644 net/mindview/util/test2.txt delete mode 100644 patterns/trash/FillableArrayList.java diff --git a/annotations/ExtractInterface.java b/annotations/ExtractInterface.java deleted file mode 100644 index 29c2d0c9..00000000 --- a/annotations/ExtractInterface.java +++ /dev/null @@ -1,10 +0,0 @@ -//: annotations/ExtractInterface.java -// javac-based annotation processing. -package annotations; -import java.lang.annotation.*; - -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.SOURCE) -public @interface ExtractInterface { - public String value(); -} ///:~ diff --git a/annotations/IfaceExtractorProcessor.java b/annotations/IfaceExtractorProcessor.java deleted file mode 100644 index 71b50229..00000000 --- a/annotations/IfaceExtractorProcessor.java +++ /dev/null @@ -1,68 +0,0 @@ -//: annotations/IfaceExtractorProcessor.java -// javac-based annotation processing. -package annotations; -import javax.annotation.processing.*; -import javax.lang.model.SourceVersion; -import javax.lang.model.element.*; -import java.util.*; -import java.io.*; - -@SupportedAnnotationTypes( - "annotations.ExtractInterface") -@SupportedSourceVersion(SourceVersion.RELEASE_8) -public class IfaceExtractorProcessor -extends AbstractProcessor { - private ArrayList - interfaceMethods = new ArrayList<>(); - private ProcessingEnvironment processingEnv; - @Override public void - init(ProcessingEnvironment processingEnv) { - this.processingEnv = processingEnv; - } - @Override public boolean - process(Set annotations, - RoundEnvironment env) { - for(Element elem : - env.getElementsAnnotatedWith(ExtractInterface.class)) { - if(elem.getModifiers().contains(Modifier.PUBLIC) && - !(elem.getModifiers().contains(Modifier.STATIC))) - interfaceMethods.add(elem); - if(interfaceMethods.size() > 0) { - for(Element el : interfaceMethods) - System.out.println(el.getKind() + - " : " + el.getModifiers() + - " : " + el.getSimpleName() + - " : " + el.asType()); - try { - try(Writer writer = - processingEnv.getFiler() - .createSourceFile("Filename.txt") - .openWriter()) { - /* writer.write("package " + - typeDecl.getPackage().getQualifiedName() +";"); - writer.write("public interface " + - annot.value() + " {"); - for(MethodDeclaration m : interfaceMethods) { - writer.print(" public "); - writer.print(m.getReturnType() + " "); - writer.print(m.getSimpleName() + " ("); - int i = 0; - for(ParameterDeclaration parm : - m.getParameters()) { - writer.print(parm.getType() + " " + - parm.getSimpleName()); - if(++i < m.getParameters().size()) - writer.print(", "); - } - writer.write(");"); - } - */ writer.write("}"); - } - } catch(Exception e) { - throw new RuntimeException(e); - } - } - } - return false; - } -} ///:~ diff --git a/annotations/InterfaceExtractorProcessor.java b/annotations/InterfaceExtractorProcessor.java deleted file mode 100644 index 9c1ab794..00000000 --- a/annotations/InterfaceExtractorProcessor.java +++ /dev/null @@ -1,60 +0,0 @@ -//: annotations/InterfaceExtractorProcessor.java -// APT-based annotation processing. -// {CompileTimeError} Not working in Java 8 -// {Exec: apt -factory -// annotations.InterfaceExtractorProcessorFactory -// Multiplier.java -s ../annotations} -package annotations; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import java.io.*; -import java.util.*; - -public class InterfaceExtractorProcessor - implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - private ArrayList interfaceMethods = - new ArrayList<>(); - public InterfaceExtractorProcessor( - AnnotationProcessorEnvironment env) { this.env = env; } - public void process() { - for(TypeDeclaration typeDecl : - env.getSpecifiedTypeDeclarations()) { - ExtractInterface annot = - typeDecl.getAnnotation(ExtractInterface.class); - if(annot == null) - break; - for(MethodDeclaration m : typeDecl.getMethods()) - if(m.getModifiers().contains(Modifier.PUBLIC) && - !(m.getModifiers().contains(Modifier.STATIC))) - interfaceMethods.add(m); - if(interfaceMethods.size() > 0) { - try { - try (PrintWriter writer = env.getFiler().createSourceFile(annot.value())) { - writer.println("package " + - typeDecl.getPackage().getQualifiedName() +";"); - writer.println("public interface " + - annot.value() + " {"); - for(MethodDeclaration m : interfaceMethods) { - writer.print(" public "); - writer.print(m.getReturnType() + " "); - writer.print(m.getSimpleName() + " ("); - int i = 0; - for(ParameterDeclaration parm : - m.getParameters()) { - writer.print(parm.getType() + " " + - parm.getSimpleName()); - if(++i < m.getParameters().size()) - writer.print(", "); - } - writer.println(");"); - } - writer.println("}"); - } - } catch(IOException ioe) { - throw new RuntimeException(ioe); - } - } - } - } -} ///:~ diff --git a/annotations/InterfaceExtractorProcessorFactory.java b/annotations/InterfaceExtractorProcessorFactory.java deleted file mode 100644 index 22aabb97..00000000 --- a/annotations/InterfaceExtractorProcessorFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -//: annotations/InterfaceExtractorProcessorFactory.java -// APT-based annotation processing. -// {CompileTimeError} Not working in Java 8 -package annotations; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import java.util.*; - -public class InterfaceExtractorProcessorFactory - implements AnnotationProcessorFactory { - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new InterfaceExtractorProcessor(env); - } - public Collection supportedAnnotationTypes() { - return - Collections.singleton("annotations.ExtractInterface"); - } - public Collection supportedOptions() { - return Collections.emptySet(); - } -} ///:~ diff --git a/annotations/Multiplier.java b/annotations/Multiplier.java deleted file mode 100644 index 56f0c1d2..00000000 --- a/annotations/Multiplier.java +++ /dev/null @@ -1,20 +0,0 @@ -//: annotations/Multiplier.java -// javac-based annotation processing. -package annotations; - -@ExtractInterface("IMultiplier") -public class Multiplier { - public int multiply(int x, int y) { - int total = 0; - for(int i = 0; i < x; i++) - total = add(total, y); - return total; - } - private int add(int x, int y) { return x + y; } - public static void main(String[] args) { - Multiplier m = new Multiplier(); - System.out.println("11*16 = " + m.multiply(11, 16)); - } -} /* Output: -11*16 = 176 -*///:~ diff --git a/annotations/database/TableCreationProcessorFactory.java b/annotations/database/TableCreationProcessorFactory.java deleted file mode 100644 index 54b100e0..00000000 --- a/annotations/database/TableCreationProcessorFactory.java +++ /dev/null @@ -1,101 +0,0 @@ -//: annotations/database/TableCreationProcessorFactory.java -// The database example using Visitor. -// {CompileTimeError} Not working in Java 8 -// {Exec: apt -factory -// annotations.database.TableCreationProcessorFactory -// database/Member.java -s database} -package annotations.database; -import com.sun.mirror.apt.*; -import com.sun.mirror.declaration.*; -import com.sun.mirror.util.*; -import java.util.*; -import static com.sun.mirror.util.DeclarationVisitors.*; - -public class TableCreationProcessorFactory - implements AnnotationProcessorFactory { - public AnnotationProcessor getProcessorFor( - Set atds, - AnnotationProcessorEnvironment env) { - return new TableCreationProcessor(env); - } - public Collection supportedAnnotationTypes() { - return Arrays.asList( - "annotations.database.DBTable", - "annotations.database.Constraints", - "annotations.database.SQLString", - "annotations.database.SQLInteger"); - } - public Collection supportedOptions() { - return Collections.emptySet(); - } - private static class TableCreationProcessor - implements AnnotationProcessor { - private final AnnotationProcessorEnvironment env; - private String sql = ""; - public TableCreationProcessor( - AnnotationProcessorEnvironment env) { - this.env = env; - } - public void process() { - for(TypeDeclaration typeDecl : - env.getSpecifiedTypeDeclarations()) { - typeDecl.accept(getDeclarationScanner( - new TableCreationVisitor(), NO_OP)); - sql = sql.substring(0, sql.length() - 1) + ");"; - System.out.println("creation SQL is :\n" + sql); - sql = ""; - } - } - private class TableCreationVisitor - extends SimpleDeclarationVisitor { - public void visitClassDeclaration( - ClassDeclaration d) { - DBTable dbTable = d.getAnnotation(DBTable.class); - if(dbTable != null) { - sql += "CREATE TABLE "; - sql += (dbTable.name().length() < 1) - ? d.getSimpleName().toUpperCase() - : dbTable.name(); - sql += " ("; - } - } - public void visitFieldDeclaration( - FieldDeclaration d) { - String columnName = ""; - if(d.getAnnotation(SQLInteger.class) != null) { - SQLInteger sInt = d.getAnnotation( - SQLInteger.class); - // Use field name if name not specified - if(sInt.name().length() < 1) - columnName = d.getSimpleName().toUpperCase(); - else - columnName = sInt.name(); - sql += "\n " + columnName + " INT" + - getConstraints(sInt.constraints()) + ","; - } - if(d.getAnnotation(SQLString.class) != null) { - SQLString sString = d.getAnnotation( - SQLString.class); - // Use field name if name not specified. - if(sString.name().length() < 1) - columnName = d.getSimpleName().toUpperCase(); - else - columnName = sString.name(); - sql += "\n " + columnName + " VARCHAR(" + - sString.value() + ")" + - getConstraints(sString.constraints()) + ","; - } - } - private String getConstraints(Constraints con) { - String constraints = ""; - if(!con.allowNull()) - constraints += " NOT NULL"; - if(con.primaryKey()) - constraints += " PRIMARY KEY"; - if(con.unique()) - constraints += " UNIQUE"; - return constraints; - } - } - } -} ///:~ diff --git a/betools/__init__.py b/betools/__init__.py deleted file mode 100644 index 2aedbf63..00000000 --- a/betools/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# https://github.com/pypa/sampleproject/blob/master/setup.py - -__all__ = ["CmdLine", "visitDir", "ruler", "head"] -from betools.cmdline import CmdLine -from betools.visitdir import visitDir -from betools.ruler import ruler, head diff --git a/betools/cmdline.py b/betools/cmdline.py deleted file mode 100644 index b907e455..00000000 --- a/betools/cmdline.py +++ /dev/null @@ -1,38 +0,0 @@ -#! py -3 -""" -Decorator adds a new command-line option and manages argparse. -See http://www.artima.com/weblogs/viewpost.jsp?thread=240845 -""" -import argparse - - -class CmdLine: - - parser = argparse.ArgumentParser() - commands = dict() - letterflags = set() - - def __init__(self, letterFlag, wordFlag): - self.wordFlag = wordFlag - self.letterFlag = letterFlag - assert wordFlag not in CmdLine.commands, "Duplicate command argument word flags" - assert letterFlag not in CmdLine.letterflags, "Duplicate command argument letter flags" - CmdLine.letterflags.add(letterFlag) - - def __call__(self, func): - CmdLine.parser.add_argument("-" + self.letterFlag, "--" + self.wordFlag, action='store_true', help=func.__doc__) - CmdLine.commands[self.wordFlag] = func - return func # No wrapping needed - - @staticmethod - def run(): - show_help = True - args = vars(CmdLine.parser.parse_args()) - for wordFlag, func in CmdLine.commands.items(): - if args[wordFlag]: - func() - show_help = False - if show_help: - CmdLine.parser.print_help() - - diff --git a/betools/ruler.py b/betools/ruler.py deleted file mode 100644 index 0a02f899..00000000 --- a/betools/ruler.py +++ /dev/null @@ -1,18 +0,0 @@ -#! python -""" -ruler() generates a string ruler with embedded text -head() does the same thing but prints it -""" - -def ruler(arg=None, sep="_", print_=False, width=60): - if arg: - result = "[ {} ]".format(str(arg)).center(width, sep) + "\n" - else: - result = "".center(width, sep) + "\n" - if print_: - print(result) - else: - return result - -def head(arg=None, sep="_", width=60): ruler(arg, sep, True, width) - diff --git a/betools/test/basic.py b/betools/test/basic.py deleted file mode 100644 index 0b906241..00000000 --- a/betools/test/basic.py +++ /dev/null @@ -1,11 +0,0 @@ -from betools import CmdLine, visitDir - -@CmdLine("t", "test") -def test(arg="default1", arg2="default2"): - """ - Testing CmdLine - """ - print("test", arg, arg2) - - -if __name__ == '__main__': CmdLine.run() diff --git a/betools/visitdir.py b/betools/visitdir.py deleted file mode 100644 index 86675163..00000000 --- a/betools/visitdir.py +++ /dev/null @@ -1,17 +0,0 @@ -#! py -3 -""" -Visits a directory and automatically returns to original -directory when you're done. -""" -from contextlib import contextmanager -import os - -@contextmanager -def visitDir(d): - d = str(d) - old = os.getcwd() - os.chdir(d) - yield d - os.chdir(old) - - diff --git a/concurrency/originalSynchCompare/SynchronizationComparisons-original-fixed.javaz b/concurrency/originalSynchCompare/SynchronizationComparisons-original-fixed.javaz deleted file mode 100644 index 1969e0a2..00000000 --- a/concurrency/originalSynchCompare/SynchronizationComparisons-original-fixed.javaz +++ /dev/null @@ -1,258 +0,0 @@ -//: concurrency/SynchronizationComparisons.java -// Comparing the performance of explicit Locks -// and Atomics versus the synchronized keyword. -import java.util.concurrent.*; -import java.util.concurrent.atomic.*; -import java.util.concurrent.locks.*; -import java.util.*; -import static net.mindview.util.Print.*; - -abstract class Accumulator { - public static long cycles = 50000L; - // Number of Modifiers and Readers during each test: - private static final int N = 4; - public static ExecutorService exec = - Executors.newFixedThreadPool(N*2); - private static CyclicBarrier barrier = - new CyclicBarrier(N*2 + 1); - protected volatile int index = 0; - protected volatile long value = 0; - protected long duration = 0; - protected String id = "error"; - protected final static int SIZE = 100000; - protected static int[] preLoaded = new int[SIZE]; - static { - // Load the array of random numbers: - Random rand = new Random(47); - for(int i = 0; i < SIZE; i++) - preLoaded[i] = rand.nextInt(); - } - public abstract void accumulate(); - public abstract long read(); - private class Modifier implements Runnable { - public void run() { - for(long i = 0; i < cycles; i++) - accumulate(); - try { - barrier.await(); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - } - private class Reader implements Runnable { - private volatile long value; - public void run() { - for(long i = 0; i < cycles; i++) - value = read(); - try { - barrier.await(); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - } - public void timedTest() { - long start = System.nanoTime(); - for(int i = 0; i < N; i++) { - exec.execute(new Modifier()); - exec.execute(new Reader()); - } - try { - barrier.await(); - } catch(Exception e) { - throw new RuntimeException(e); - } - duration = System.nanoTime() - start; - printf("%-13s: %13d\n", id, duration); - } - public static void - report(Accumulator acc1, Accumulator acc2) { - printf("%-22s: %.2f\n", acc1.id + "/" + acc2.id, - (double)acc1.duration/(double)acc2.duration); - } -} - -class BaseLine extends Accumulator { - { id = "BaseLine"; } - public void accumulate() { - if(index >= SIZE - 1) index = 0; - value += preLoaded[index++]; - } - public long read() { return value; } -} - -class SynchronizedTest extends Accumulator { - { id = "synchronized"; } - public synchronized void accumulate() { - if(index >= SIZE - 1) index = 0; - value += preLoaded[index++]; - } - public synchronized long read() { - return value; - } -} - -class LockTest extends Accumulator { - { id = "Lock"; } - private Lock lock = new ReentrantLock(); - public void accumulate() { - lock.lock(); - try { - if(index >= SIZE - 1) index = 0; - value += preLoaded[index++]; - } finally { - lock.unlock(); - } - } - public long read() { - lock.lock(); - try { - return value; - } finally { - lock.unlock(); - } - } -} - -class AtomicTest extends Accumulator { - { id = "Atomic"; } - private AtomicInteger index = new AtomicInteger(0); - private AtomicLong value = new AtomicLong(0); - public void accumulate() { - // Oops! Relying on more than one Atomic at - // a time doesn't work. But it still gives us - // a performance indicator: - int i = index.getAndIncrement(); - if(++i >= SIZE - 1) { - i = 0; - index.set(i); - } - value.getAndAdd(preLoaded[i]); - } - public long read() { return value.get(); } -} - -public class SynchronizationComparisons { - static BaseLine baseLine = new BaseLine(); - static SynchronizedTest synch = new SynchronizedTest(); - static LockTest lock = new LockTest(); - static AtomicTest atomic = new AtomicTest(); - static void test() { - print("============================"); - printf("%-12s : %13d\n", "Cycles", Accumulator.cycles); - baseLine.timedTest(); - synch.timedTest(); - lock.timedTest(); - atomic.timedTest(); - Accumulator.report(synch, baseLine); - Accumulator.report(lock, baseLine); - Accumulator.report(atomic, baseLine); - Accumulator.report(synch, lock); - Accumulator.report(synch, atomic); - Accumulator.report(lock, atomic); - } - public static void main(String[] args) { - int iterations = 5; // Default - if(args.length > 0) // Optionally change iterations - iterations = new Integer(args[0]); - // The first time fills the thread pool: - print("Warmup"); - baseLine.timedTest(); - // Now the initial test doesn't include the cost - // of starting the threads for the first time. - // Produce multiple data points: - for(int i = 0; i < iterations; i++) { - test(); - Accumulator.cycles *= 2; - } - Accumulator.exec.shutdown(); - } -} /* Output: (Sample) -Warmup -BaseLine : 34237033 -============================ -Cycles : 50000 -BaseLine : 20966632 -synchronized : 24326555 -Lock : 53669950 -Atomic : 30552487 -synchronized/BaseLine : 1.16 -Lock/BaseLine : 2.56 -Atomic/BaseLine : 1.46 -synchronized/Lock : 0.45 -synchronized/Atomic : 0.79 -Lock/Atomic : 1.76 -============================ -Cycles : 100000 -BaseLine : 41512818 -synchronized : 43843003 -Lock : 87430386 -Atomic : 51892350 -synchronized/BaseLine : 1.06 -Lock/BaseLine : 2.11 -Atomic/BaseLine : 1.25 -synchronized/Lock : 0.50 -synchronized/Atomic : 0.84 -Lock/Atomic : 1.68 -============================ -Cycles : 200000 -BaseLine : 80176670 -synchronized : 5455046661 -Lock : 177686829 -Atomic : 101789194 -synchronized/BaseLine : 68.04 -Lock/BaseLine : 2.22 -Atomic/BaseLine : 1.27 -synchronized/Lock : 30.70 -synchronized/Atomic : 53.59 -Lock/Atomic : 1.75 -============================ -Cycles : 400000 -BaseLine : 160383513 -synchronized : 780052493 -Lock : 362187652 -Atomic : 202030984 -synchronized/BaseLine : 4.86 -Lock/BaseLine : 2.26 -Atomic/BaseLine : 1.26 -synchronized/Lock : 2.15 -synchronized/Atomic : 3.86 -Lock/Atomic : 1.79 -============================ -Cycles : 800000 -BaseLine : 322064955 -synchronized : 336155014 -Lock : 704615531 -Atomic : 393231542 -synchronized/BaseLine : 1.04 -Lock/BaseLine : 2.19 -Atomic/BaseLine : 1.22 -synchronized/Lock : 0.47 -synchronized/Atomic : 0.85 -Lock/Atomic : 1.79 -============================ -Cycles : 1600000 -BaseLine : 650004120 -synchronized : 52235762925 -Lock : 1419602771 -Atomic : 796950171 -synchronized/BaseLine : 80.36 -Lock/BaseLine : 2.18 -Atomic/BaseLine : 1.23 -synchronized/Lock : 36.80 -synchronized/Atomic : 65.54 -Lock/Atomic : 1.78 -============================ -Cycles : 3200000 -BaseLine : 1285664519 -synchronized : 96336767661 -Lock : 2846988654 -Atomic : 1590545726 -synchronized/BaseLine : 74.93 -Lock/BaseLine : 2.21 -Atomic/BaseLine : 1.24 -synchronized/Lock : 33.84 -synchronized/Atomic : 60.57 -Lock/Atomic : 1.79 -*///:~ diff --git a/go.bat b/go.bat deleted file mode 100644 index 9dde642c..00000000 --- a/go.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -python Examples.py -e -cd ExtractedExamples -ant build diff --git a/io/StoreCADState.java b/io/StoreCADState.java deleted file mode 100644 index 874633a8..00000000 --- a/io/StoreCADState.java +++ /dev/null @@ -1,106 +0,0 @@ -//: io/StoreCADState.java -// Saving the state of a pretend CAD system. -import java.io.*; -import java.util.*; - -abstract class Shape implements Serializable { - public static final int RED = 1, BLUE = 2, GREEN = 3; - private int xPos, yPos, dimension; - private static Random rand = new Random(47); - private static int counter = 0; - public abstract void setColor(int newColor); - public abstract int getColor(); - public Shape(int xVal, int yVal, int dim) { - xPos = xVal; - yPos = yVal; - dimension = dim; - } - public String toString() { - return getClass() + - "color[" + getColor() + "] xPos[" + xPos + - "] yPos[" + yPos + "] dim[" + dimension + "]\n"; - } - public static Shape randomFactory() { - int xVal = rand.nextInt(100); - int yVal = rand.nextInt(100); - int dim = rand.nextInt(100); - switch(counter++ % 3) { - default: - case 0: return new Circle(xVal, yVal, dim); - case 1: return new Square(xVal, yVal, dim); - case 2: return new Line(xVal, yVal, dim); - } - } -} - -class Circle extends Shape { - private static int color = RED; - public Circle(int xVal, int yVal, int dim) { - super(xVal, yVal, dim); - } - public void setColor(int newColor) { color = newColor; } - public int getColor() { return color; } -} - -class Square extends Shape { - private static int color; - public Square(int xVal, int yVal, int dim) { - super(xVal, yVal, dim); - color = RED; - } - public void setColor(int newColor) { color = newColor; } - public int getColor() { return color; } -} - -class Line extends Shape { - private static int color = RED; - public static void - serializeStaticState(ObjectOutputStream os) - throws IOException { os.writeInt(color); } - public static void - deserializeStaticState(ObjectInputStream os) - throws IOException { color = os.readInt(); } - public Line(int xVal, int yVal, int dim) { - super(xVal, yVal, dim); - } - public void setColor(int newColor) { color = newColor; } - public int getColor() { return color; } -} - -public class StoreCADState { - public static void main(String[] args) throws Exception { - List> shapeTypes = - new ArrayList>(); - // Add references to the class objects: - shapeTypes.add(Circle.class); - shapeTypes.add(Square.class); - shapeTypes.add(Line.class); - List shapes = new ArrayList(); - // Make some shapes: - for(int i = 0; i < 10; i++) - shapes.add(Shape.randomFactory()); - // Set all the static colors to GREEN: - for(int i = 0; i < 10; i++) - ((Shape)shapes.get(i)).setColor(Shape.GREEN); - // Save the state vector: - ObjectOutputStream out = new ObjectOutputStream( - new FileOutputStream("CADState.out")); - out.writeObject(shapeTypes); - Line.serializeStaticState(out); - out.writeObject(shapes); - // Display the shapes: - System.out.println(shapes); - } -} /* Output: -[class Circlecolor[3] xPos[58] yPos[55] dim[93] -, class Squarecolor[3] xPos[61] yPos[61] dim[29] -, class Linecolor[3] xPos[68] yPos[0] dim[22] -, class Circlecolor[3] xPos[7] yPos[88] dim[28] -, class Squarecolor[3] xPos[51] yPos[89] dim[9] -, class Linecolor[3] xPos[78] yPos[98] dim[61] -, class Circlecolor[3] xPos[20] yPos[58] dim[16] -, class Squarecolor[3] xPos[40] yPos[11] dim[22] -, class Linecolor[3] xPos[4] yPos[83] dim[6] -, class Circlecolor[3] xPos[75] yPos[10] dim[42] -] -*///:~ diff --git a/net/mindview/atunit/AtUnitRemover.java b/net/mindview/atunit/AtUnitRemover.java deleted file mode 100644 index 70e73c63..00000000 --- a/net/mindview/atunit/AtUnitRemover.java +++ /dev/null @@ -1,66 +0,0 @@ -//: net/mindview/atunit/AtUnitRemover.java -// Displays @Unit annotations in compiled class files. If -// first argument is "-r", @Unit annotations are removed. -// {ThrowsException} Some kind of bug here... -// {Args: ..} -// {Requires: javassist.bytecode.ClassFile; -// You must install the Javassist library from -// www.javassist.org } -package net.mindview.atunit; -import javassist.*; -import javassist.bytecode.*; -import javassist.bytecode.annotation.*; -import java.io.*; -import net.mindview.util.*; -import static net.mindview.util.Print.*; - -public class AtUnitRemover -implements ProcessFiles.Strategy { - private static boolean remove = false; - public static void main(String[] args) throws Exception { - if(args.length > 0 && args[0].equals("-r")) { - remove = true; - String[] nargs = new String[args.length - 1]; - System.arraycopy(args, 1, nargs, 0, nargs.length); - args = nargs; - } - new ProcessFiles( - new AtUnitRemover(), "class").start(args); - } - @Override - public void process(File cFile) { - boolean modified = false; - try { - String cName = ClassNameFinder.thisClass( - BinaryFile.read(cFile)); - if(!cName.contains(".")) - return; // Ignore unpackaged classes - ClassPool cPool = ClassPool.getDefault(); - CtClass ctClass = cPool.get(cName); - for(CtMethod method : ctClass.getDeclaredMethods()) { - MethodInfo mi = method.getMethodInfo(); - AnnotationsAttribute attr = (AnnotationsAttribute) - mi.getAttribute(AnnotationsAttribute.visibleTag); - if(attr == null) continue; - for(Annotation ann : attr.getAnnotations()) { - if(ann.getTypeName() - .startsWith("net.mindview.atunit")) { - print(ctClass.getName() + " Method: " - + mi.getName() + " " + ann); - if(remove) { - ctClass.removeMethod(method); - modified = true; - } - } - } - } - // Fields are not removed in this version (see text). - if(modified) - ctClass.toBytecode(new DataOutputStream( - new FileOutputStream(cFile))); - ctClass.detach(); - } catch(Exception e) { - throw new RuntimeException(e); - } - } -} ///:~ diff --git a/net/mindview/util/test.txt b/net/mindview/util/test.txt deleted file mode 100644 index eaaf9bd1..00000000 --- a/net/mindview/util/test.txt +++ /dev/null @@ -1,82 +0,0 @@ -//: net/mindview/util/TextFile.java -// Static functions for reading and writing text files as -// a single string, and treating a file as an ArrayList. -package net.mindview.util; -import java.io.*; -import java.util.*; - -public class TextFile extends ArrayList { - // Read a file as a single string: - public static String read(String fileName) { - StringBuilder sb = new StringBuilder(); - try { - BufferedReader in= new BufferedReader(new FileReader( - new File(fileName).getAbsoluteFile())); - try { - String s; - while((s = in.readLine()) != null) { - sb.append(s); - sb.append("\n"); - } - } finally { - in.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - return sb.toString(); - } - // Write a single file in one method call: - public static void write(String fileName, String text) { - try { - PrintWriter out = new PrintWriter( - new File(fileName).getAbsoluteFile()); - try { - out.print(text); - } finally { - out.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - } - // Read a file, split by any regular expression: - public TextFile(String fileName, String splitter) { - super(Arrays.asList(read(fileName).split(splitter))); - // Regular expression split() often leaves an empty - // String at the first position: - if(get(0).equals("")) remove(0); - } - // Normally read by lines: - public TextFile(String fileName) { - this(fileName, "\n"); - } - public void write(String fileName) { - try { - PrintWriter out = new PrintWriter( - new File(fileName).getAbsoluteFile()); - try { - for(String item : this) - out.println(item); - } finally { - out.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - } - // Simple test: - public static void main(String[] args) { - String file = read("TextFile.java"); - write("test.txt", file); - TextFile text = new TextFile("test.txt"); - text.write("test2.txt"); - // Break into unique sorted list of words: - TreeSet words = new TreeSet( - new TextFile("TextFile.java", "\\W+")); - // Display the capitalized words: - System.out.println(words.headSet("a")); - } -} /* Output: -[0, ArrayList, Arrays, Break, BufferedReader, BufferedWriter, Clean, Display, File, FileReader, FileWriter, IOException, Normally, Output, PrintWriter, Read, Regular, RuntimeException, Simple, Static, String, StringBuilder, System, TextFile, Tools, TreeSet, W, Write] -*///:~ diff --git a/net/mindview/util/test2.txt b/net/mindview/util/test2.txt deleted file mode 100644 index eaaf9bd1..00000000 --- a/net/mindview/util/test2.txt +++ /dev/null @@ -1,82 +0,0 @@ -//: net/mindview/util/TextFile.java -// Static functions for reading and writing text files as -// a single string, and treating a file as an ArrayList. -package net.mindview.util; -import java.io.*; -import java.util.*; - -public class TextFile extends ArrayList { - // Read a file as a single string: - public static String read(String fileName) { - StringBuilder sb = new StringBuilder(); - try { - BufferedReader in= new BufferedReader(new FileReader( - new File(fileName).getAbsoluteFile())); - try { - String s; - while((s = in.readLine()) != null) { - sb.append(s); - sb.append("\n"); - } - } finally { - in.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - return sb.toString(); - } - // Write a single file in one method call: - public static void write(String fileName, String text) { - try { - PrintWriter out = new PrintWriter( - new File(fileName).getAbsoluteFile()); - try { - out.print(text); - } finally { - out.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - } - // Read a file, split by any regular expression: - public TextFile(String fileName, String splitter) { - super(Arrays.asList(read(fileName).split(splitter))); - // Regular expression split() often leaves an empty - // String at the first position: - if(get(0).equals("")) remove(0); - } - // Normally read by lines: - public TextFile(String fileName) { - this(fileName, "\n"); - } - public void write(String fileName) { - try { - PrintWriter out = new PrintWriter( - new File(fileName).getAbsoluteFile()); - try { - for(String item : this) - out.println(item); - } finally { - out.close(); - } - } catch(IOException e) { - throw new RuntimeException(e); - } - } - // Simple test: - public static void main(String[] args) { - String file = read("TextFile.java"); - write("test.txt", file); - TextFile text = new TextFile("test.txt"); - text.write("test2.txt"); - // Break into unique sorted list of words: - TreeSet words = new TreeSet( - new TextFile("TextFile.java", "\\W+")); - // Display the capitalized words: - System.out.println(words.headSet("a")); - } -} /* Output: -[0, ArrayList, Arrays, Break, BufferedReader, BufferedWriter, Clean, Display, File, FileReader, FileWriter, IOException, Normally, Output, PrintWriter, Read, Regular, RuntimeException, Simple, Static, String, StringBuilder, System, TextFile, Tools, TreeSet, W, Write] -*///:~ diff --git a/patterns/trash/FillableArrayList.java b/patterns/trash/FillableArrayList.java deleted file mode 100644 index dc050304..00000000 --- a/patterns/trash/FillableArrayList.java +++ /dev/null @@ -1,14 +0,0 @@ -//: patterns/trash/FillableArrayList.java -// Adapter that makes an ArrayList Fillable. -package patterns.trash; -import java.util.*; - -public class FillableArrayList -implements Fillable { - private ArrayList v; - public FillableArrayList(ArrayList vv) { v = vv; } - @Override - public void addTrash(Trash t) { - v.add(t); - } -} ///:~