Revision: 7033
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=7033&view=rev
Author:   milek_pl
Date:     2012-05-22 11:28:30 +0000 (Tue, 22 May 2012)
Log Message:
-----------
use GUI configuration settings for the HTTP Server started from the GUI

Modified Paths:
--------------
    trunk/JLanguageTool/CHANGES.txt
    trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle.properties
    trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle_en.properties
    trunk/JLanguageTool/src/java/org/languagetool/gui/Configuration.java
    trunk/JLanguageTool/src/java/org/languagetool/gui/ConfigurationDialog.java
    trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java
    trunk/JLanguageTool/src/java/org/languagetool/server/HTTPServer.java
    
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
    trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java

Property Changed:
----------------
    trunk/JLanguageTool/


Property changes on: trunk/JLanguageTool
___________________________________________________________________
Modified: svn:ignore
   - dist
junit.classes
build
test.txt
test-de.txt
JLanguageTool.jar
JLanguageToolGUI.jar
test-de-gross.txt
test-de-gross2.txt
test-en-gross.txt
test-en-gross2.txt
TODO
jar-package
openoffice
cobertura.ser
junit.instrumented-classes
LanguageTool.jnlp
.fbwarnings
.settings
*.zip
*.checkstyle
*.checkstyle
reports
.externalToolBuilders
.pmd
.fbprefs
bin
keystore.ks
ooolocales.properties

*.iml

test-en.txt

myalias.p12

   + dist
junit.classes
build
test.txt
test-de.txt
JLanguageTool.jar
JLanguageToolGUI.jar
test-de-gross.txt
test-de-gross2.txt
test-en-gross.txt
test-en-gross2.txt
TODO
jar-package
openoffice
cobertura.ser
junit.instrumented-classes
LanguageTool.jnlp
.fbwarnings
.settings
*.zip
*.checkstyle
*.checkstyle
reports
.externalToolBuilders
.pmd
.fbprefs
bin
keystore.ks
ooolocales.properties

*.iml

test-en.txt

*.p12


Modified: trunk/JLanguageTool/CHANGES.txt
===================================================================
--- trunk/JLanguageTool/CHANGES.txt     2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/CHANGES.txt     2012-05-22 11:28:30 UTC (rev 7033)
@@ -15,8 +15,8 @@
 
  -Russian:
    -fixed a few false alarms
-   -add URL element for some rules with URL with more information about this 
rule
-   -add spellcheck dictionary for standalone version. 
+   -added URL element for some rules with URL with more information about this 
rule
+   -added spellcheck dictionary for standalone version. 
 
  -Italian:
    -several new rules (Riccardo Murri and Agnese Dal Borgo)
@@ -27,6 +27,9 @@
 
  -Breton
    -several new rules and fixed false alarms
+   
+ -Polish
+   -added spelling check dictionary for the standalone version
 
  -LibreOffice: if a LanguageTool rule has an URL with more information, the
   grammar checking dialog in LibreOffice will now offer a "More..." link
@@ -38,6 +41,10 @@
  -LanguageTool in the standalone version supports now spell-checking via 
hunspell.
   There are two distribution files: a .zip file for standalone use, 
   and an .oxt extension for LibreOffice/ApacheOpenOffice.
+  
+ -If you start the HTTP Server from the GUI, it now reads the configuration 
files 
+  that are configured in the GUI (if the appropriate checkbox is set). 
+  This way the user can control the behavior of the server easily. 
 
  -The XML format for rules has been changed to use <marker>...</marker> tags 
instead
   of mark_from and mark_to attributes

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle.properties
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle.properties     
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle.properties     
2012-05-22 11:28:30 UTC (rev 7033)
@@ -211,6 +211,8 @@
 
 unpaired_brackets = Unpaired bracket or similar symbol
 
+useGUIConfig = Use above settings for the server
+
 whitespace_repetition = Possible typo: you repeated a whitespace
 
 ro = Romanian

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle_en.properties
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle_en.properties  
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/MessagesBundle_en.properties  
2012-05-22 11:28:30 UTC (rev 7033)
@@ -203,6 +203,8 @@
 
 unpaired_brackets = Unpaired bracket or similar symbol
 
+useGUIConfig = Use above settings for the server 
+
 whitespace_repetition = Possible typo: you repeated a whitespace
 
 ro = Romanian

Modified: trunk/JLanguageTool/src/java/org/languagetool/gui/Configuration.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/gui/Configuration.java        
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/gui/Configuration.java        
2012-05-22 11:28:30 UTC (rev 7033)
@@ -45,6 +45,7 @@
   private static final String AUTO_DETECT_CONFIG_KEY = "autoDetect";
   private static final String SERVER_RUN_CONFIG_KEY = "serverMode";
   private static final String SERVER_PORT_CONFIG_KEY = "serverPort";
+  private static final String USE_GUI_CONFIG_KEY = "useGUIConfig";
   private static final String DELIMITER = ",";
 
   private File configFile;
@@ -54,6 +55,7 @@
   private Language motherTongue;
   private boolean runServer;
   private boolean autoDetect;
+  private boolean guiConfig;
   private int serverPort = HTTPServer.DEFAULT_PORT;
 
   public Configuration(final File baseDir, final String filename)
@@ -121,6 +123,15 @@
     return serverPort;
   }
 
+  public void setUseGUIConfig(final boolean useGUIConfg) {
+           this.guiConfig = useGUIConfg;
+         }
+
+ public boolean getUseGUIConfig() {
+           return guiConfig;
+}
+
+  
   public void setServerPort(final int serverPort) {
     this.serverPort = serverPort;
   }
@@ -144,16 +155,11 @@
       if (motherTongueStr != null) {
         motherTongue = Language.getLanguageForShortName(motherTongueStr);
       }
-      
-      final String autoDetectStr = (String) props.get(AUTO_DETECT_CONFIG_KEY);
-      if (autoDetectStr != null) {
-          autoDetect = autoDetectStr.equals("true");
-      }
-      
-      final String runServerString = (String) props.get(SERVER_RUN_CONFIG_KEY);
-      if (runServerString != null) {
-        runServer = runServerString.equals("true");
-      }
+            
+      autoDetect = "true".equals((String) props.get(AUTO_DETECT_CONFIG_KEY));  
          
+      guiConfig = "true".equals((String) props.get(USE_GUI_CONFIG_KEY));
+      runServer = "true".equals((String) props.get(SERVER_RUN_CONFIG_KEY));
+
       final String serverPortString = (String) 
props.get(SERVER_PORT_CONFIG_KEY);
       if (serverPortString != null) {
         serverPort = Integer.parseInt(serverPortString);
@@ -186,8 +192,9 @@
       props.setProperty(MOTHER_TONGUE_CONFIG_KEY, motherTongue.getShortName());
     }
     props.setProperty(AUTO_DETECT_CONFIG_KEY, 
Boolean.valueOf(autoDetect).toString());
+    props.setProperty(USE_GUI_CONFIG_KEY, 
Boolean.valueOf(guiConfig).toString());
     props.setProperty(SERVER_RUN_CONFIG_KEY, 
Boolean.valueOf(runServer).toString());
-    props.setProperty(SERVER_PORT_CONFIG_KEY, 
Integer.valueOf(serverPort).toString());
+    props.setProperty(SERVER_PORT_CONFIG_KEY, 
Integer.valueOf(serverPort).toString());    
     final FileOutputStream fos = new FileOutputStream(configFile);
     try {
       props.store(fos, "LanguageTool configuration");

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/gui/ConfigurationDialog.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/gui/ConfigurationDialog.java  
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/gui/ConfigurationDialog.java  
2012-05-22 11:28:30 UTC (rev 7033)
@@ -90,10 +90,13 @@
   private Language motherTongue;
   private boolean serverMode;
   private int serverPort;
+  private boolean useGUIConfig;
 
   private final Frame owner;
   private final boolean insideOOo;
 
+private JCheckBox serverSettingsCheckbox;
+
   public ConfigurationDialog(Frame owner, boolean insideOOo) {
     this.owner = owner;
     this.insideOOo = insideOOo;
@@ -238,6 +241,14 @@
         }
       });
       portPanel.add(serverPortField, cons);
+      cons.gridx = 0;
+      cons.gridy = 10;
+      serverSettingsCheckbox = new JCheckBox(StringTools.getLabel(messages
+                 .getString("useGUIConfig")));
+      serverSettingsCheckbox.setMnemonic(StringTools.getMnemonic(messages
+                 .getString("useGUIConfig")));
+      serverSettingsCheckbox.setSelected(useGUIConfig);
+      portPanel.add(serverSettingsCheckbox, cons);
     }
 
     final JPanel buttonPanel = new JPanel();
@@ -397,6 +408,9 @@
         serverMode = serverCheckbox.isSelected();
         serverPort = Integer.parseInt(serverPortField.getText());
       }
+      if (serverSettingsCheckbox != null) {
+          useGUIConfig = serverSettingsCheckbox.isSelected();          
+        }
       dialog.setVisible(false);
     } else if (e.getSource() == cancelButton) {
       dialog.setVisible(false);
@@ -458,7 +472,19 @@
   public void setRunServer(boolean serverMode) {
     this.serverMode = serverMode;
   }
+  
+  public void setUseGUIConfig(boolean useGUIConfig) {
+         this.useGUIConfig = useGUIConfig;
+  }
+  
+  public boolean getUseGUIConfig() {
+         if (serverSettingsCheckbox == null) {
+                 return false;
+         }
+         return serverSettingsCheckbox.isSelected();
+  }  
 
+
   public boolean getRunServer() {
     if (serverCheckbox == null) {
       return false;

Modified: trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java 2012-05-22 
11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/gui/Main.java 2012-05-22 
11:28:30 UTC (rev 7033)
@@ -291,9 +291,15 @@
     config.setDisabledCategoryNames(configDialog.getDisabledCategoryNames());
     config.setMotherTongue(configDialog.getMotherTongue());
     config.setRunServer(configDialog.getRunServer());
+    config.setUseGUIConfig(configDialog.getUseGUIConfig());
     config.setServerPort(configDialog.getServerPort());
+    try { //save config - needed for the server
+        config.saveConfiguration();
+      } catch (final IOException e) {
+        Tools.showError(e);
+      }
     // Stop server, start new server if requested:
-    stopServer();
+    stopServer();        
     maybeStartServer();
   }
 
@@ -369,9 +375,9 @@
 
   private void maybeStartServer() {
     if (config.getRunServer()) {
-      httpServer = new HTTPServer(config.getServerPort());
+      httpServer = new HTTPServer(config.getServerPort(), false, true);
       try {
-        httpServer.run();
+       httpServer.run();        
       } catch (final PortBindingException e) {
         final String message = e.getMessage() + "\n\n" + 
org.languagetool.tools.Tools.getFullStackTrace(e);
         JOptionPane.showMessageDialog(null, message, "Error", 
JOptionPane.ERROR_MESSAGE);
@@ -419,6 +425,7 @@
       configDialog.setDisabledCategories(config.getDisabledCategoryNames());
       configDialog.setRunServer(config.getRunServer());
       configDialog.setServerPort(config.getServerPort());
+      configDialog.setUseGUIConfig(config.getUseGUIConfig());
       configDialogs.put(language, configDialog);
     }
     return configDialog;

Modified: trunk/JLanguageTool/src/java/org/languagetool/server/HTTPServer.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/server/HTTPServer.java        
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/java/org/languagetool/server/HTTPServer.java        
2012-05-22 11:28:30 UTC (rev 7033)
@@ -50,6 +50,11 @@
   private final HttpServer server;
   
   /**
+   * True if the server was started from the GUI.
+   */
+  private boolean runInternally = false;
+  
+  /**
    * Prepare a server on the given port - use run() to start it. Accepts
    * connections from localhost only.
    */
@@ -73,32 +78,47 @@
    * @throws PortBindingException if we cannot bind to the given port, e.g. 
because something else is running there
    */
   public HTTPServer(int port, boolean verbose) {
-    this(port, verbose, DEFAULT_ALLOWED_IPS);
+    this(port, verbose, false, DEFAULT_ALLOWED_IPS);
   }
 
+  
   /**
+   * Prepare a server on localhost on the given port - use run() to start it. 
Accepts
+   * connections from localhost only.
+   * @param verbose if true, the text to be checked will be displayed in case 
of exceptions
+   * @param runInternally if true, then the server was started from the GUI.
+   * @throws PortBindingException if we cannot bind to the given port, e.g. 
because something else is running there
+   */
+  public HTTPServer(int port, boolean verbose, boolean runInternally) {        
+    this(port, verbose, runInternally, DEFAULT_HOST, DEFAULT_ALLOWED_IPS);    
+  }
+
+  
+  /**
    * Prepare a server on localhost on the given port - use run() to start it. 
The server will bind to localhost.
    * @param verbose if true, the text to be checked will be displayed in case 
of exceptions
+   * @param runInternally if true, then the server was started from the GUI.
    * @param allowedIps the IP addresses from which connections are allowed
    * @throws PortBindingException if we cannot bind to the given port, e.g. 
because something else is running there
    */
-  public HTTPServer(int port, boolean verbose, Set<String> allowedIps) {
-    this(port, verbose, DEFAULT_HOST, allowedIps);
+  public HTTPServer(int port, boolean verbose, boolean runInternally, 
Set<String> allowedIps) {
+    this(port, verbose, runInternally, DEFAULT_HOST, allowedIps);
   }
   
   /**
    * Prepare a server on the given host and port - use run() to start it.
    * @param verbose if true, the text to be checked will be displayed in case 
of exceptions
+   * @param runInternally if true, then the server was started from the GUI.
    * @param host the host to bind to, e.g. <code>"localhost"</code> or 
<code>InetAddress.anyLocalAddress()</code>
    * @param allowedIps the IP addresses from which connections are allowed
    * @throws PortBindingException if we cannot bind to the given port, e.g. 
because something else is running there
    * @since 1.7
    */
-  public HTTPServer(int port, boolean verbose, String host, Set<String> 
allowedIps) {
+  public HTTPServer(int port, boolean verbose, boolean runInternally, String 
host, Set<String> allowedIps) {
     this.port = port;
     try {
       server = HttpServer.create(new InetSocketAddress(host, port), 0);
-      server.createContext("/", new LanguageToolHttpHandler(verbose, 
allowedIps));
+      server.createContext("/", new LanguageToolHttpHandler(verbose, 
allowedIps, runInternally));
     } catch (Exception e) {
       throw new PortBindingException(
           "LanguageTool server could not be started on host '" + host + "', 
port " + port
@@ -125,13 +145,14 @@
       System.out.println("Server stopped");
     }
   }
-
+  
   public static void main(String[] args) throws IOException {
     if (args.length > 3) {
       System.out.println("Usage: " + HTTPServer.class.getSimpleName() + " 
[-p|--port port]");
       System.exit(1);
     }
     boolean verbose = false;
+    boolean runInternal = false;
     int port = DEFAULT_PORT;
     for (int i = 0; i < args.length; i++) {
       if ("-p".equals(args[i]) || "--port".equals(args[i])) {
@@ -142,7 +163,7 @@
     }
     try {
       final HttpServer server = HttpServer.create(new 
InetSocketAddress(DEFAULT_HOST, port), 0);
-      server.createContext("/", new LanguageToolHttpHandler(verbose, 
DEFAULT_ALLOWED_IPS));
+      server.createContext("/", new LanguageToolHttpHandler(verbose, 
DEFAULT_ALLOWED_IPS, runInternal));
       server.start();
       System.out.println("Started LanguageTool HTTP server on " + DEFAULT_HOST 
+ ", port " + port + ".");
     } catch (Exception e) {

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
   2012-05-22 11:01:58 UTC (rev 7032)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
   2012-05-22 11:28:30 UTC (rev 7033)
@@ -4,12 +4,14 @@
 import com.sun.net.httpserver.HttpHandler;
 import org.languagetool.JLanguageTool;
 import org.languagetool.Language;
+import org.languagetool.gui.Configuration;
 import org.languagetool.rules.RuleMatch;
 import org.languagetool.rules.bitext.BitextRule;
 import org.languagetool.tools.StringTools;
 import org.languagetool.tools.Tools;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
@@ -27,10 +29,18 @@
 
   private final Set<String> allowedIps;  
   private final boolean verbose;
-
-  LanguageToolHttpHandler(boolean verbose, Set<String> allowedIps) {
+  private final boolean internalServer;
+  
+  private static final String CONFIG_FILE = ".languagetool.cfg";
+  
+  private final Configuration config;
+ 
+  LanguageToolHttpHandler(boolean verbose, Set<String> allowedIps,
+                 boolean internal) throws IOException {
     this.verbose = verbose;
     this.allowedIps = allowedIps;
+    this.internalServer = internal;
+    config = new Configuration(new File(System.getProperty("user.home")), 
CONFIG_FILE);
   }
 
   @Override
@@ -193,8 +203,37 @@
     final JLanguageTool newLanguageTool = new JLanguageTool(lang, 
motherTongue);
     newLanguageTool.activateDefaultPatternRules();
     newLanguageTool.activateDefaultFalseFriendRules();
+    if (internalServer && config.getUseGUIConfig()) { // use the GUI config 
values
+       configureGUI(lang, newLanguageTool);
+    }
     return newLanguageTool;
   }
+      
+  private void configureGUI(Language language, JLanguageTool langTool) {       
  
+         print("Using options configured in the GUI");
+         //TODO: add a parameter to config to set language
+           final Set<String> disabledRules = config.getDisabledRuleIds();
+           if (disabledRules != null) {
+             for (final String ruleId : disabledRules) {
+               langTool.disableRule(ruleId);
+             }
+           }
+           final Set<String> disabledCategories = config.
+                       getDisabledCategoryNames();
+           if (disabledCategories != null) {
+             for (final String categoryName : disabledCategories) {
+               langTool.disableCategory(categoryName);
+             }
+           }
+           final Set<String> enabledRules = config.getEnabledRuleIds();
+           if (enabledRules != null) {
+             for (String ruleName : enabledRules) {
+               langTool.enableDefaultOffRule(ruleName);
+               langTool.enableRule(ruleName);
+             }
+           }       
+         }
+ 
 
   /**
    * Construct an xml string containing all supported languages. <br/>The xml 
format is:<br/>

Modified: 
trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java
===================================================================
--- trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java    
2012-05-22 11:01:58 UTC (rev 7032)
+++ trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java    
2012-05-22 11:28:30 UTC (rev 7033)
@@ -95,7 +95,7 @@
   }
 
   public void testAccessDenied() throws Exception {
-    final HTTPServer server = new HTTPServer(HTTPServer.DEFAULT_PORT, false, 
new HashSet<String>());
+    final HTTPServer server = new HTTPServer(HTTPServer.DEFAULT_PORT, false, 
false, new HashSet<String>());
     try {
       server.run();
       try {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs

Reply via email to