001/** 002 * Copyright (C) 2014 Universidade de Aveiro, DETI/IEETA, Bioinformatics Group - http://bioinformatics.ua.pt/ 003 * 004 * This file is part of Dicoogle/dicoogle. 005 * 006 * Dicoogle/dicoogle is free software: you can redistribute it and/or modify 007 * it under the terms of the GNU General Public License as published by 008 * the Free Software Foundation, either version 3 of the License, or 009 * (at your option) any later version. 010 * 011 * Dicoogle/dicoogle is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License 017 * along with Dicoogle. If not, see <http://www.gnu.org/licenses/>. 018 */ 019 020package pt.ua.dicoogle.server.web.servlets.management; 021 022import java.io.IOException; 023 024import javax.servlet.ServletException; 025import javax.servlet.http.HttpServlet; 026import javax.servlet.http.HttpServletRequest; 027import javax.servlet.http.HttpServletResponse; 028 029import net.sf.json.JSONObject; 030 031import org.apache.commons.lang3.StringUtils; 032 033import pt.ua.dicoogle.core.ServerSettings; 034import pt.ua.dicoogle.core.XMLSupport; 035 036/** 037 * 038 * @author Frederico Silva <fredericosilva@ua.pt> 039 */ 040public class IndexerSettingsServlet extends HttpServlet { 041 042 public enum SettingsType { 043 044 all,path, zip, effort, thumbnail,thumbnailSize, watcher; 045 } 046 private final SettingsType type; 047 048 public IndexerSettingsServlet(SettingsType type) { 049 this.type = type; 050 } 051 052 @Override 053 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 054 055 String param = null; 056 String path = null; 057 boolean watcher=false, zip = false, saveT = false; 058 int ieffort = 0; 059 String tumbnailSize = null; 060 if(type != SettingsType.all) 061 { 062 param = req.getParameter(type.toString()); 063 064 if (StringUtils.isEmpty(param)) { 065 resp.sendError(400, "Invalid " + type.toString()); 066 } 067 } 068 else{ 069 path = req.getParameter("path"); 070 watcher = Boolean.parseBoolean(req.getParameter("watcher")); 071 zip = Boolean.parseBoolean(req.getParameter("zip")); 072 saveT = Boolean.parseBoolean(req.getParameter("saveThumbnail")); 073 ieffort = Integer.parseInt(req.getParameter("effort")); 074 tumbnailSize = req.getParameter("thumbnailSize"); 075 } 076 077 switch (type) { 078 case path: 079 ServerSettings.getInstance().setDicoogleDir(param); 080 resp.getWriter().append("Dir set to: " + param); 081 break; 082 case zip: 083 boolean gzip = Boolean.parseBoolean(param); 084 ServerSettings.getInstance().setGzipStorage(gzip); 085 resp.getWriter().append("Storage/Index Files compressed set to: " + param); 086 break; 087 case effort: 088 //TODO: CHECK ACCPTABLE RANGE 089 int effort = Integer.parseInt(param); 090 ServerSettings.getInstance().setIndexerEffort(effort); 091 resp.getWriter().append("index effort set to: " + effort); 092 break; 093 case thumbnail: 094 boolean saveThumbanail = Boolean.parseBoolean(param); 095 ServerSettings.getInstance().setSaveThumbnails(saveThumbanail); 096 break; 097 case thumbnailSize: 098 //TODO: Should be a int 099 //int thumbSize = Integer.parseInt(param); 100 ServerSettings.getInstance().setThumbnailsMatrix(param); 101 break; 102 case watcher: 103 ServerSettings.getInstance().setMonitorWatcher(Boolean.parseBoolean(param)); 104 break; 105 case all: 106 ServerSettings.getInstance().setDicoogleDir(path); 107 ServerSettings.getInstance().setGzipStorage(zip); 108 ServerSettings.getInstance().setIndexerEffort(ieffort); 109 ServerSettings.getInstance().setSaveThumbnails(saveT); 110 ServerSettings.getInstance().setThumbnailsMatrix(tumbnailSize); 111 ServerSettings.getInstance().setMonitorWatcher(watcher); 112 break; 113 114 } 115 new XMLSupport().printXML(); 116 } 117 118 @Override 119 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 120 String result = ""; 121 resp.setContentType("application/json"); 122 switch (type) { 123 case path: 124 result = ServerSettings.getInstance().getDicoogleDir(); 125 break; 126 case zip: 127 result = String.valueOf(ServerSettings.getInstance().isGzipStorage()); 128 break; 129 case effort: 130 result = String.valueOf(ServerSettings.getInstance().getIndexerEffort()); 131 break; 132 case thumbnail: 133 result = String.valueOf(ServerSettings.getInstance().getSaveThumbnails()); 134 break; 135 case thumbnailSize: 136 result = String.valueOf(ServerSettings.getInstance().getThumbnailsMatrix()); 137 break; 138 case watcher: 139 result = String.valueOf(ServerSettings.getInstance().isMonitorWatcher()); 140 break; 141 case all: 142 JSONObject allresponse = new JSONObject(); 143 allresponse.put("path", ServerSettings.getInstance().getDicoogleDir()); 144 allresponse.put("zip", ServerSettings.getInstance().isGzipStorage()); 145 allresponse.put("effort", String.valueOf(ServerSettings.getInstance().getIndexerEffort())); 146 allresponse.put("thumbnail", ServerSettings.getInstance().getSaveThumbnails()); 147 allresponse.put("thumbnailSize", String.valueOf(ServerSettings.getInstance().getThumbnailsMatrix())); 148 allresponse.put("watcher", ServerSettings.getInstance().isMonitorWatcher()); 149 150 resp.getWriter().write(allresponse.toString()); 151 break; 152 } 153 154 resp.setContentType("application/json"); 155 resp.getWriter().append(result); 156 } 157 158}