Skip to content

Commit

Permalink
Put everything into one app
Browse files Browse the repository at this point in the history
  • Loading branch information
timo-a committed Mar 15, 2021
1 parent 23e366c commit 74d1766
Show file tree
Hide file tree
Showing 31 changed files with 795 additions and 81 deletions.
26 changes: 15 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
# Lomboker

Usage
## Purpose

```
lomboker$ cp ./lib/src/test/resources/ClassAInput.java ./lib/src/test/resources/ClassAOutput.java
lomboker$ ./gradlew :app-getter:run --args="../lib/src/test/resources/ClassAInput.java"
This command supports migrating a large code base to lombok.
Eclipse/IntelliJ can migrate one class in a few clicks but that may not be fast enough for you.
Lomboker helps you scale.

lomboker$ #./gradlew :app-getter:jar
lomboker$ #java -jar ./app-getter/build/libs/app-getter.jar
## Usage

lomboker$ ./gradlew :app-getter:assemble
lomboker$ java -jar ./app-getter/build/libs/app-getter.jar lib/src/test/resources/ClassAInput.jav
```
lomboker$ cp ./lib/src/test/resources/ClassAInput.java ./lib/src/test/resources/ClassAOutput.java
lomboker$ ./gradlew :app:run --args=".reduce getter ./lib/src/test/resources/ClassAInput.java"
```
lomboker$ #./gradlew :app-getter:assemble
lomboker$ #java -jar ./app-getter/build/libs/lomboker.jar reduce getter lib/src/test/resources/ClassAInput.java
```

```
```

## TODO
- github actions
- test required for push
- build jars
19 changes: 0 additions & 19 deletions app-getter/build.gradle.kts

This file was deleted.

9 changes: 9 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,22 @@

plugins {
id("lomboker.java-application-conventions")
id("org.springframework.boot") version "2.2.2.RELEASE"
}

dependencies {
implementation(project(":lib"))

implementation("info.picocli:picocli:4.6.1")

}

application {
// Define the main class for the application.
mainClass.set("de.lomboker.app.App")
}

tasks.bootJar {
archiveBaseName.set("lomboker")
archiveVersion.set(VERSION)
}
19 changes: 17 additions & 2 deletions app/src/main/java/de/lomboker/app/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,23 @@
*/
package de.lomboker.app;

public class App {
import picocli.CommandLine;
import picocli.CommandLine.Command;

@Command(name = "lomboker",
subcommands = {
CounterApp.class,
Reduce.class,
Mark.class
})
public class App implements Runnable {
public static void main(String[] args) {
System.out.println("nothing implemented yet");
new CommandLine(new App()).execute(args);
}

@Override
public void run() {
System.out.println("I'm lomboker. you need to cal a subcommand like count|reduce|mark");
}

}
66 changes: 66 additions & 0 deletions app/src/main/java/de/lomboker/app/CounterApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package de.lomboker.app;

import de.lomboker.lib.TrivialGetters;
import de.lomboker.lib.TrivialSetters;
import picocli.CommandLine;
import picocli.CommandLine.Command;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;

@Command(name = "count", description = "no options or positional parameters")
public class CounterApp implements Runnable {

public static void main(String[] args) {
int exitCode = new CommandLine(new CounterApp()).execute(args);
System.exit(exitCode);
}

@Override
public void run() {
InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
String inputStr = "";
while(inputStr != null){
String count;
try {
inputStr = bufReader.readLine();
if (inputStr == null)
break;

count = evaluateFile(inputStr);

} catch (IOException e) {
count = "IOException while reading line from stdin";
}
System.out.println(inputStr + " " + count);
}

}

private static String evaluateFile(String fname) {
String code;
try {
code = Files.readString(Path.of(fname));
} catch (IOException e) {
return fname + " ioexception reading file";
}
int trivialGetters = TrivialGetters.countTrivialGetters(code);
int fuzzyGetters = TrivialGetters.countFuzzyGetters(code);

int trivialSetters = TrivialSetters.countTrivialSetters(code);
int fuzzySetters = TrivialSetters.countFuzzySetters(code);

return String.format("%d %d %d %d",
trivialGetters,
fuzzyGetters,
trivialSetters,
fuzzySetters );
}
}
21 changes: 21 additions & 0 deletions app/src/main/java/de/lomboker/app/Mark.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package de.lomboker.app;

import de.lomboker.app.getter.MarkGetter;
import de.lomboker.app.getter.ReduceGetter;
import de.lomboker.app.setter.MarkSetter;
import de.lomboker.app.setter.ReduceSetter;
import picocli.CommandLine.Command;

@Command(name = "mark",
subcommands = {
MarkGetter.class,
MarkSetter.class},
description = "mark non trivial setters")
public class Mark implements Runnable {

@Override
public void run() {
System.out.println("I'm Mark. You need to call a subcommand like getter|setter");
}

}
19 changes: 19 additions & 0 deletions app/src/main/java/de/lomboker/app/Reduce.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package de.lomboker.app;

import de.lomboker.app.getter.ReduceGetter;
import de.lomboker.app.setter.ReduceSetter;
import picocli.CommandLine.Command;

@Command(name = "reduce",
subcommands = {
ReduceGetter.class,
ReduceSetter.class},
description = "no options or positional parameters")
public class Reduce implements Runnable {

@Override
public void run() {
System.out.println("I'm Reduce. You need to call a subcommand like getter|setter");
}

}
32 changes: 32 additions & 0 deletions app/src/main/java/de/lomboker/app/getter/MarkGetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package de.lomboker.app.getter;

import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import static de.lomboker.lib.FuzzyGetterMarker.markFuzzyGetters;

@Command(name = "getter", description = "mark non-trivial getters")
public class MarkGetter implements Runnable {

@Parameters(index = "0")
File file;

@Override
public void run() {
try {
String code = Files.readString(file.toPath());
String converted = markFuzzyGetters(code);
Files.writeString(file.toPath(), converted);
} catch (IOException e) {
e.printStackTrace();
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,21 @@
*/
package de.lomboker.app.getter;

import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import static de.lomboker.lib.GetterReducer.reduceGetters;
import static de.lomboker.lib.TrivialGetters.reduceGetters;

public class Getter implements Runnable {
@Command(name = "getter", description = "reduce trivial getters")
public class ReduceGetter implements Runnable {

@Parameters(index = "0")
File file;

public static void main(String[] args) {
int exitCode = new CommandLine(new Getter()).execute(args);
System.exit(exitCode);
}

@Override
public void run() {
try {
Expand Down
38 changes: 38 additions & 0 deletions app/src/main/java/de/lomboker/app/setter/MarkSetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package de.lomboker.app.setter;

import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import static de.lomboker.lib.FuzzySetterMarker.markFuzzySetters;

@Command(name = "setter", description = "mark non-trivial setters")
public class MarkSetter implements Runnable {

@Parameters(index = "0")
File file;

public static void main(String[] args) {
int exitCode = new CommandLine(new MarkSetter()).execute(args);
System.exit(exitCode);
}

@Override
public void run() {
try {
String code = Files.readString(file.toPath());
String converted = markFuzzySetters(code);
Files.writeString(file.toPath(), converted);
} catch (IOException e) {
e.printStackTrace();
}

}
}
38 changes: 38 additions & 0 deletions app/src/main/java/de/lomboker/app/setter/ReduceSetter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package de.lomboker.app.setter;

import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import static de.lomboker.lib.TrivialSetters.reduceSetters;

@Command(name = "setter", description = "reduce trivial setters")
public class ReduceSetter implements Runnable {

@Parameters(index = "0")
File file;

public static void main(String[] args) {
int exitCode = new CommandLine(new ReduceSetter()).execute(args);
System.exit(exitCode);
}

@Override
public void run() {
try {
String code = Files.readString(file.toPath());
String converted = reduceSetters(code);
Files.writeString(file.toPath(), converted);
} catch (IOException e) {
e.printStackTrace();
}

}
}
1 change: 0 additions & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@ repositories {
// Use the plugin portal to apply community plugins in convention plugins.
gradlePluginPortal()
mavenCentral()

}
2 changes: 2 additions & 0 deletions buildSrc/src/main/kotlin/Config.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const val VERSION = "0.0.0-SNAPSHOT"

30 changes: 30 additions & 0 deletions lib/src/main/java/de/lomboker/lib/ClassWrapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package de.lomboker.lib;

import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class ClassWrapper {

public CompilationUnit cu;

public List<FieldDeclaration> fields;

public List<MethodDeclaration> methods;

public Set<String> fieldNames;

public ClassWrapper(String code) {
this.cu = StaticJavaParser.parse(code);
this.fields = cu.findAll(FieldDeclaration.class);
this.methods = cu.findAll(MethodDeclaration.class);
this.fieldNames = fields.stream()
.map(f -> f.getVariable(0).getName().asString())
.collect(Collectors.toSet());
}
}
Loading

0 comments on commit 74d1766

Please sign in to comment.