forked from tushartushar/DesigniteJava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDesignite.java
More file actions
134 lines (119 loc) · 3.99 KB
/
Designite.java
File metadata and controls
134 lines (119 loc) · 3.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package Designite;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import Designite.SourceModel.*;
import Designite.utils.Constants;
import Designite.utils.Logger;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.commons.cli.*;
/**
*
* This is the start of the project
*/
public class Designite {
public static void main(String[] args) throws IOException {
InputArgs argsObj = parseArguments(args);
SM_Project project = new SM_Project(argsObj);
Logger.logFile = getlogFileName(argsObj);
//TODO: log the version number
project.parse();
project.resolve();
project.computeMetrics();
project.detectCodeSmells();
if (Constants.DEBUG)
writeDebugLog(argsObj, project);
Logger.log("Done.");
}
private static void writeDebugLog(InputArgs argsObj, SM_Project project) {
PrintWriter writer = getDebugLogStream(argsObj);
project.printDebugLog(writer);
if (writer != null)
writer.close();
}
private static InputArgs parseArguments(String[] args) {
Options argOptions = new Options();
Option input = new Option("i", "Input", true, "Input source folder path");
input.setRequired(true);
argOptions.addOption(input);
Option output = new Option("o", "Output", true, "Path to the output folder");
output.setRequired(true);
argOptions.addOption(output);
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
CommandLine cmd = null;
try {
cmd = parser.parse(argOptions, args);
} catch (ParseException e) {
System.out.println(e.getMessage());
formatter.printHelp("Designite", argOptions);
Logger.log("Quitting..");
System.exit(1);
}
if(cmd==null)
{
System.out.println("Couldn't parse the command line arguments.");
formatter.printHelp("Designite", argOptions);
Logger.log("Quitting..");
System.exit(2);
}
String inputFolderPath = cmd.getOptionValue("Input");
String outputFolderPath = cmd.getOptionValue("Output");
InputArgs inputArgs= null;
try
{
inputArgs = new InputArgs(inputFolderPath, outputFolderPath);
}
catch(IllegalArgumentException ex)
{
Logger.log(ex.getMessage());
Logger.log("Quitting..");
System.exit(3);
}
return inputArgs;
}
private static String getlogFileName(InputArgs argsObj) {
String file = null;
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(Calendar.getInstance().getTime());
file = argsObj.getOutputFolder() + File.separator + "DesigniteLog" + timeStamp + ".txt";
ensureOutputFolderExists(argsObj.getOutputFolder());
return file;
}
private static void ensureOutputFolderExists(String outputFolder) {
if (outputFolder == null)
return;
File folder = new File(outputFolder);
if (folder.exists() && folder.isDirectory())
return;
try
{
boolean isCreated = folder.mkdirs();
if (!isCreated)
{
System.out.println("Couldn't create output folder.");
}
}
catch (Exception ex)
{
System.out.println("Couldn't create output folder. " + ex.getMessage());
}
}
private static PrintWriter getDebugLogStream(InputArgs argsObj) {
PrintWriter writer = null;
if (!argsObj.getOutputFolder().equals("")) {
String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(Calendar.getInstance().getTime());
String filename = argsObj.getOutputFolder() + "DesigniteDebugLog" + timeStamp + ".txt";
try {
writer = new PrintWriter(filename);
} catch (FileNotFoundException ex) {
Logger.log(ex.getMessage());
}
}
return writer;
}
}