A program to recognize and reward our most engaged community members
package testPackage;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.StringWriter;import java.io.PrintWriter;import java.lang.Exception; import javax.swing.JFileChooser;import javax.swing.JOptionPane;import javax.swing.SwingUtilities;/** * the Logger class to log Strings and Exceptions (for exceptions, the stack trace can be logged if wanted) */public class Logger { private String log; private String path; private String suffix; private BufferedWriter bWriter = null; private boolean active = false; public final String FILE_SEP = File.separator; public final String HOME_DIR = System.getProperty("user.home"); public final String FOLDER = "ML" + FILE_SEP + "logFiles"; /** * the constructor. The logger is NOT activated by default! * @param path the path for the Logger to be saved. If the path is "", the path is set to the users desktop. * @param nameSuffix the name Suffix (the prefix is an index number, so that old log files are not getting overriden) */ public Logger (String path, String nameSuffix) { this.log = ""; this.path = path; this.suffix = nameSuffix; } /** * activetes the logger. Creates the logger File, preferable in currentUser/Desktop/DAI/logFiles. User prompt, if no valid path could be found. */ public void activate() throws Exception{ this.active = true; if (this.bWriter == null) { boolean pathFound = findPath(); if (pathFound) { createFile(); } else { showUserSelectPathPrompt(); } } } /** * disables the logger. This will not remove the loggerFile. It will just make sure that no more log messages are being saved. */ public void disable() { this.active = false; } /** * pops up a dialog to choose a folder to save the log files in. */ private void showUserSelectPathPrompt() throws Exception{ JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("choose your folder for saving the log files."); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { path = chooser.getSelectedFile().getPath(); createFile(); } else { SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog(null, "No valid folder was selected, so no log files will be created."); } }); this.active = false; } } /** * find the Desktop path * @return returns true if the desktopPath could be found and false if not. */ private boolean findPath() { String[] possibleDesktopNames = new String[4]; possibleDesktopNames[0] = "Desktop"; possibleDesktopNames[1] = "Arbeitsplatz"; possibleDesktopNames[2] = "Schreibtisch"; possibleDesktopNames[3] = "Arbeitsfläche"; File f = new File(""); for (int i = 0; i < possibleDesktopNames.length; i++) { if (!f.exists()) { f = new File(HOME_DIR + FILE_SEP + possibleDesktopNames); } else { break; } } if (!f.exists()) { return false; } else { path = f.getPath() + FILE_SEP + FOLDER; return true; } } /** * creates the file (including folders, if non-existant) and generates the BufferedWriter */ private void createFile() throws Exception{ int fileNb = 1; new File(path).mkdirs(); File file = null; while (true) { file = new File(this.path + "/" + fileNb + " " + suffix + ".txt"); if (file.exists()) { fileNb++; } else { break; } } if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file.getAbsoluteFile()); bWriter = new BufferedWriter(fw); } /** * log a message. A message is only logged, if {@link #active} is set to true. * @param s the message to log */ public void log(String s) throws Exception { if (this.active) { bWriter.append("\n" + s); } } /** * log an exception. As in {@link #log(String)} the exception is only logged, if {@link #active} is set to true. * @param description the description / additional text to log * @param e the exception to log * @param printStackTrace print the exceptions stack trace? */ public void log(String description, Exception e, boolean printStackTrace) throws Exception { if (this.active) { if (printStackTrace) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); this.log(description + "\t" + e.toString() + "\n" + sw.toString()); } else { this.log(description + "\t" + e.toString()); } } } /** * save the logger. This closes the {@link #bWriter}. */ public void save() throws Exception{ if (bWriter != null) { bWriter.close(); } } public static void main(String[] args) { try { Logger logger = new Logger("","description"); logger.activate(); logger.log("test123"); logger.disable(); logger.log("this should not appear in the logger file!"); logger.activate(); logger.log("exception only", new Exception("test exception"), false); logger.log("exception with stacktrace", new Exception("stack trace exception"), true); logger.disable(); logger.log("this should not appear in the logger file!"); logger.save(); Logger mutedLogger = new Logger("", "muted Logger"); logger.log("this shouldn't appear!!!"); logger.log("this shouldn't appear!!!"); logger.save(); } catch (Exception e) { e.printStackTrace(); } }}
RAPIDMINER_HOME is not set. Trying the directory 'C:\Program Files\Rapid-I\RapidMiner5\scripts\..'...Using local jre: C:\Program Files\Rapid-I\RapidMiner5\scripts\..\jre\bin\java.exe...RAPIDMINER_LIBRARIES = ;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\bcmail.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\bcprov.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\blas.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\collections-generic.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\colt.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\commons-codec-1.4.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\commons-collections.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\commons-httpclient-3.1.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\commons-lang-2.4.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\commons-logging-1.1.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\concurrent.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\dailab.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\dom4j-1.6.1.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\encog.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\gentlyWEB.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\glazedlists.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\groovy-all-1.7.7.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\groovy-all.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\itextpdf-5.3.3.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\ivy-2.2.0.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jama.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jcommon.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jdom.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jep.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jfreechart.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jh.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jmathplot.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\joone-engine.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jugpreview.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jung-algorithms.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jung-api.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jung-graph-impl.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jung-visualization.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\junit.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jwnl.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\jxl.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\kdb.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\launcher.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\looks.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\mail.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\microba.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\poi-3.8-20120326.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\poi-excelant-3.8-20120326.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\poi-ooxml-3.8-20120326.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\poi-ooxml-schemas-3.8-20120326.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\poi-scratchpad-3.8-20120326.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\rapidminer.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\rm_doc.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\rome.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\rsyntaxtextarea.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\SassyReader-0.5.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\slf4j-api-1.6.4.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\slf4j-simple-1.6.4.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\swingx-all-1.6.4.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\vldocking.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\ws-commons-util-1.0.2.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xmlbeans-2.3.0.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xmlpull.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xmlrpc-client-3.1.3.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xmlrpc-common-3.1.3.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xpp3.jar;C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\xstream.jarStarting RapidMiner from 'C:\Program Files\Rapid-I\RapidMiner5\scripts\..' using classes from 'C:\Program Files\Rapid-I\RapidMiner5\scripts\..\lib\rapidminer.jar'...Creating file "C:\Users\admin\AppData\Roaming\check_rm_java_version"Java Version: 1.7.0_11Removing file "C:\Users\admin\AppData\Roaming\check_rm_java_version"Starting in multicore mode with G1 garbage collector...exit=0
<?xml version="1.0" encoding="UTF-8" standalone="no"?><process version="5.3.015"> <context> <input/> <output/> <macros/> </context> <operator activated="true" class="process" compatibility="5.3.015" expanded="true" name="Process"> <process expanded="true"> <operator activated="true" class="execute_script" compatibility="5.3.015" expanded="true" height="60" name="execute script" width="90" x="179" y="75"> <parameter key="script" value="import com.rapidminer.tools.Ontology; import de.dailab.ml.util.Logger; /** * the Main class, executing everything. */ public class Main { 	ExampleSet exampleSet; 	Logger logger; 	/** 	 * the constructor. 	 * @param input the ExampleSet, usually given by the operators port. It can be retrieved by calling input. 	 */ 	public Main(ExampleSet input) { 		this.exampleSet = input; 		this.logger = new Logger("","remove questionmark-values"); 		this.logger.activate(); 	} 	/** 	 * do the work 	 */ 	public void doWork() { 		logger.log("test1"); 		logger.log("test2"); 		logger.log("test3"); 		logger.log("test4"); 		logger.log("test5"); 		logger.log("test6"); 	} 	/** 	 * get the results. 	 * @return the ExampleSet, holding all data 	 */ 	public ExampleSet getResult() { 		return this.exampleSet; 	} } Main main = new Main(input[0]); main.doWork(); return main.getResult();"/> </operator> <portSpacing port="source_input 1" spacing="0"/> <portSpacing port="sink_result 1" spacing="0"/> </process> </operator></process>