KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jester > SimpleCodeMangler


1 package jester;
2
3 public abstract class SimpleCodeMangler implements CodeMangler {
4     private ClassSourceCodeChanger sourceCodeSystem;
5     //
6
private int indexOfLastChange = -1;
7     public SimpleCodeMangler(ClassSourceCodeChanger sourceCodeSystem) {
8         super();
9         this.sourceCodeSystem = sourceCodeSystem;
10     }
11     int getIndexOfLastChange() {
12         return indexOfLastChange;
13     }
14     IgnoreListDocument getOriginalContents() throws ConfigurationException {
15         return sourceCodeSystem.getOriginalContents();
16     }
17     boolean makeChange(int index, String JavaDoc valueChangedFrom, String JavaDoc valueChangedTo) throws SourceChangeException {
18         try {
19             sourceCodeSystem.writeOverSourceReplacing(index, valueChangedFrom, valueChangedTo);
20             indexOfLastChange = index;
21             return true;
22         } catch (SourceChangeException ex) {
23             indexOfLastChange = index;
24             return makeSomeChangeToFileSource();
25         }
26     }
27     public boolean makeChangeToClass() throws SourceChangeException {
28         boolean couldMakeChange = makeSomeChangeToFileSource();
29         boolean everMadeAChange = indexOfLastChange != -1;
30         if (!couldMakeChange && everMadeAChange) {
31             sourceCodeSystem.writeOriginalContentsBack();
32         }
33         return couldMakeChange;
34     }
35     abstract boolean makeSomeChangeToFileSource() throws SourceChangeException;
36 }
Popular Tags