feat: 발주기관 소속 프로젝트만 보이도록 기능 추가
parent
c8399d6ee8
commit
a5f294bee6
14
pom.xml
14
pom.xml
|
|
@ -537,8 +537,22 @@
|
|||
<version>2.9.1-v20130827-0309</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-collections</groupId>
|
||||
<artifactId>commons-collections</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>egovframework.rte</groupId>
|
||||
<artifactId>egovframework-rte-psl-dataaccess</artifactId>
|
||||
<version>2.7.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/egovframework.rte.psl.dataaccess-2.7.0.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.opengis</groupId>
|
||||
<artifactId>gt-jdbc</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
package com.geotwo.webserver.core.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public abstract class AbstractService extends HttpServlet {
|
||||
private static final long serialVersionUID = 2014061020172321L;
|
||||
|
||||
public abstract Object parseQuery(HttpServletRequest paramHttpServletRequest) throws Exception;
|
||||
|
||||
public abstract String doProcess(String paramString);
|
||||
|
||||
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
|
||||
super.service(arg0, arg1);
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doGet(req, resp);
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doPost(req, resp);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,182 +0,0 @@
|
|||
package com.geotwo.webserver.core.service;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.ServerInfo;
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.plugin.ows.util.PluginUtil;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.text.DecimalFormat;
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
public class Service extends AbstractService {
|
||||
private static final long serialVersionUID = 2014061008205121L;
|
||||
|
||||
private static final int SLEEP_TIME = 1000;
|
||||
|
||||
private static final int MAX_SLEEP_TIME = 20000;
|
||||
|
||||
public String parseQuery(HttpServletRequest req) throws Exception {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String doProcess(String str) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
|
||||
req.setCharacterEncoding("UTF-8");
|
||||
String rootPath = ((HttpServletRequest)req).getContextPath();
|
||||
String serviceName = ((HttpServletRequest)req).getRequestURI().replace(rootPath, "");
|
||||
while (serviceName.endsWith("/"))
|
||||
serviceName = serviceName.substring(0, serviceName.length() - 1);
|
||||
long reqId = System.currentTimeMillis();
|
||||
if (((HttpServletRequest)req).getMethod().equalsIgnoreCase("GET")) {
|
||||
LogMngr.getInstance().reqInfo("[REQUEST]",
|
||||
"[" + reqId + "] GET, From " + PluginUtil.getClientIP((HttpServletRequest)req) +
|
||||
" To " + ((serviceName.length() == 0) ? "/" : serviceName) + " , Request : " + ((HttpServletRequest)req).getQueryString());
|
||||
} else {
|
||||
LogMngr.getInstance().reqInfo("[REQUEST]",
|
||||
"[" + reqId + "] POST, From " + PluginUtil.getClientIP((HttpServletRequest)req) +
|
||||
" To " + ((serviceName.length() == 0) ? "/" : serviceName) + " , Request : " + ((HttpServletRequest)req).getQueryString());
|
||||
}
|
||||
if (serviceName.length() == 0) {
|
||||
RequestDispatcher dispatcher = req.getRequestDispatcher("index.html");
|
||||
dispatcher.forward(req, resp);
|
||||
return;
|
||||
}
|
||||
if (isFileService(serviceName)) {
|
||||
File file = new File(getServletContext().getRealPath(serviceName));
|
||||
writeFileResponse(resp, file);
|
||||
return;
|
||||
}
|
||||
HttpServlet service = ServiceMngr.getService(serviceName);
|
||||
if (service != null) {
|
||||
if (service instanceof ServerInfoService) {
|
||||
service.service(req, resp);
|
||||
} else if (ServerInfo.getInstance().isStarted()) {
|
||||
if (ServerInfo.getInstance().isReStarting()) {
|
||||
long sleepTile = System.currentTimeMillis();
|
||||
while (true) {
|
||||
if (System.currentTimeMillis() - sleepTile > 20000L) {
|
||||
writeFailResponse(resp, "O2Map Web is busy to restart. Waiting time for request has been exceeded. [20/sec]");
|
||||
break;
|
||||
}
|
||||
if (!ServerInfo.getInstance().isReStarting()) {
|
||||
service.service(req, resp);
|
||||
break;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000L);
|
||||
} catch (InterruptedException interruptedException) {}
|
||||
}
|
||||
} else {
|
||||
service.service(req, resp);
|
||||
}
|
||||
} else {
|
||||
writeFailResponse(resp, "O2Map Web is not ready. Please check up server configurations and restart server.");
|
||||
}
|
||||
} else {
|
||||
writeFailResponse(resp, "Service [" + serviceName + "] is unregistered Service on O2Map Web.");
|
||||
}
|
||||
LogMngr.getInstance().reqInfo("[RESPONSE]",
|
||||
"[" + reqId + "] is Finish." +
|
||||
|
||||
"Time : " + (new DecimalFormat(".##")).format((System.currentTimeMillis() - reqId) / 1000.0D) + "/sec");
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doGet(req, resp);
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doPost(req, resp);
|
||||
}
|
||||
|
||||
private boolean isFileService(String uri) {
|
||||
try {
|
||||
File file = new File(getServletContext().getRealPath(uri));
|
||||
if (file.exists())
|
||||
return true;
|
||||
} catch (Exception exception) {}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void writeFileResponse(ServletResponse resp, File file) {
|
||||
try {
|
||||
int length = 0;
|
||||
ServletOutputStream outStream = resp.getOutputStream();
|
||||
String mimetype = getServletContext().getMimeType(file.getAbsolutePath());
|
||||
if (mimetype == null)
|
||||
mimetype = "application/octet-stream";
|
||||
resp.setContentType(mimetype);
|
||||
resp.setContentLength((int)file.length());
|
||||
byte[] byteBuffer = new byte[1024];
|
||||
FileInputStream in = new FileInputStream(file);
|
||||
while (in != null && (length = in.read(byteBuffer)) != -1)
|
||||
outStream.write(byteBuffer, 0, length);
|
||||
in.close();
|
||||
outStream.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Request file not found. :: " + e.getMessage());
|
||||
} catch (IOException e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Can't make response output stream. :: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void writeFailResponse(ServletResponse resp, String msg) {
|
||||
try {
|
||||
LogMngr.getInstance().logError("[SERVICE]", msg);
|
||||
Document doc = getFailDocument(msg);
|
||||
Transformer xformer = TransformerFactory.newInstance().newTransformer();
|
||||
if (ServerContext.getDocIndent().intValue() > 0) {
|
||||
xformer.setOutputProperty("indent", "yes");
|
||||
xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", ServerContext.getDocIndent().toString());
|
||||
}
|
||||
resp.setContentType("text/xml; charset=UTF-8");
|
||||
xformer.transform(new DOMSource(doc), new StreamResult((OutputStream)resp.getOutputStream()));
|
||||
} catch (Exception e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Do not create XML : " + Service.class + " / " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static Document getFailDocument(String msg) throws ParserConfigurationException {
|
||||
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
|
||||
Document doc = docBuilder.newDocument();
|
||||
Element rootElement = doc.createElement("SERVER");
|
||||
doc.appendChild(rootElement);
|
||||
Element result = doc.createElement("RESULT");
|
||||
result.appendChild(doc.createTextNode("Fail"));
|
||||
rootElement.appendChild(result);
|
||||
Element errorMessage = doc.createElement("INFO");
|
||||
errorMessage.appendChild(doc.createTextNode(msg));
|
||||
rootElement.appendChild(errorMessage);
|
||||
return doc;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
ServerConfiguration.getInstance().stopServer();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
package com.geotwo.webserver.plugin.ows.service;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.service.AbstractService;
|
||||
import com.geotwo.webserver.plugin.ows.exception.OWSServiceException;
|
||||
import com.geotwo.webserver.plugin.ows.service.parser.WMSParser;
|
||||
import com.geotwo.webserver.plugin.ows.util.XMLUtil;
|
||||
import com.geotwo.webserver.plugin.ows.wms.request.Request;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.WMSGetCapabilities;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.WMSGetFeatureInfo;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.WMSGetLegendGraphic;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.WMSGetMap;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.request.GetCapabilitiesRequest;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.request.GetFeatureInfoRequest;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.request.GetLegendGraphicRequest;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.request.GetMapRequest;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
public class WMSService extends AbstractService {
|
||||
private static final long serialVersionUID = 2014061021213030L;
|
||||
|
||||
public Request parseQuery(HttpServletRequest req) throws OWSServiceException, Exception {
|
||||
Request requestObj = (new WMSParser(req)).parseQuery();
|
||||
return requestObj;
|
||||
}
|
||||
|
||||
public String doProcess(String str) {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
doPost(req, resp);
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
Request requestObj = null;
|
||||
Document doc = null;
|
||||
try {
|
||||
requestObj = parseQuery(req);
|
||||
} catch (OWSServiceException e) {
|
||||
doc = e.getDocument();
|
||||
LogMngr.getInstance().logDebug("[SERVICE]", "WMS Request Prasing Exception : " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
OWSServiceException ose = new OWSServiceException("[" + e.getClass().toString() + "] " + e.getMessage());
|
||||
doc = ose.getDocument();
|
||||
LogMngr.getInstance().logError("[SERVICE]", "WMS Request Prasing Exception : [" + e.getClass().toString() + "] " + e.getMessage());
|
||||
}
|
||||
boolean isXMLWriteHere = true;
|
||||
if (requestObj != null) {
|
||||
if (requestObj.getVersion().equals("1.3.0")) {
|
||||
if (requestObj instanceof GetCapabilitiesRequest) {
|
||||
WMSGetCapabilities wmsGetCapabilities = new WMSGetCapabilities((GetCapabilitiesRequest)requestObj);
|
||||
doc = wmsGetCapabilities.getCapabilities();
|
||||
} else if (requestObj instanceof GetMapRequest) {
|
||||
WMSGetMap wmsGetMap = new WMSGetMap((GetMapRequest)requestObj);
|
||||
doc = wmsGetMap.getMap(resp);
|
||||
isXMLWriteHere = false;
|
||||
} else if (requestObj instanceof GetFeatureInfoRequest) {
|
||||
WMSGetFeatureInfo wmsGet = new WMSGetFeatureInfo((GetFeatureInfoRequest)requestObj);
|
||||
doc = wmsGet.getFeatureInfo(resp);
|
||||
isXMLWriteHere = false;
|
||||
} else if (requestObj instanceof GetLegendGraphicRequest) {
|
||||
WMSGetLegendGraphic wmsGetLegendGraphic = new WMSGetLegendGraphic((GetLegendGraphicRequest)requestObj);
|
||||
doc = wmsGetLegendGraphic.getLegendGraphic(resp);
|
||||
isXMLWriteHere = false;
|
||||
}
|
||||
} else {
|
||||
LogMngr.getInstance().logDebug("[SERVICE]", "ver." + requestObj.getVersion() + " is not supported");
|
||||
}
|
||||
} else {
|
||||
LogMngr.getInstance().logDebug("[SERVICE]", "requestObj is not generated.");
|
||||
}
|
||||
if (doc != null)
|
||||
try {
|
||||
XMLUtil.writeToResponse(resp, doc);
|
||||
} catch (Exception e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Write XML Exception : " + e.getMessage());
|
||||
doc = null;
|
||||
}
|
||||
if (doc == null && isXMLWriteHere) {
|
||||
resp.setContentType("text/xml; charset=UTF-8");
|
||||
RequestDispatcher dispatcher = req.getRequestDispatcher("/OWSServiceError.xml");
|
||||
dispatcher.forward((ServletRequest)req, (ServletResponse)resp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
package com.geotwo.webserver.plugin.ows.wms.wms130;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.render.RenderMngr;
|
||||
import com.geotwo.webserver.core.render.io.O2PngWriter;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.plugin.ows.exception.OWSServiceException;
|
||||
import com.geotwo.webserver.plugin.ows.wms.wms130.request.GetMapRequest;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.OutputStream;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
public class WMSGetMap {
|
||||
GetMapRequest requestObj = null;
|
||||
|
||||
public WMSGetMap(GetMapRequest requestObj) {
|
||||
this.requestObj = requestObj;
|
||||
}
|
||||
|
||||
public Document getMap(HttpServletResponse resp) {
|
||||
AVList params = new AVList();
|
||||
params.setValue("request.wms.layers", this.requestObj.getLayers());
|
||||
params.setValue("request.wms.bbox", this.requestObj.getBbox());
|
||||
params.setValue("request.wms.width", Integer.valueOf(this.requestObj.getWidth()));
|
||||
params.setValue("request.wms.height", Integer.valueOf(this.requestObj.getHeight()));
|
||||
params.setValue("request.wms.format", this.requestObj.getFormat());
|
||||
params.setValue("request.wms.transparent", Boolean.valueOf(this.requestObj.isTransparent()));
|
||||
params.setValue("request.wms.bgcolor", this.requestObj.getBgcolor());
|
||||
params.setValue("request.wms.styles", this.requestObj.getStyles());
|
||||
params.setValue("request.wms.filter", this.requestObj.getFilter());
|
||||
if (this.requestObj.getSld() != null)
|
||||
params.setValue("request.wms.sld", this.requestObj.getSld());
|
||||
BufferedImage image = null;
|
||||
Document doc = null;
|
||||
try {
|
||||
image = RenderMngr.productMap(params);
|
||||
} catch (Exception e) {
|
||||
OWSServiceException ose = new OWSServiceException("WMS GetMap Exception : Image process fails : " + e.getMessage());
|
||||
doc = ose.getDocument();
|
||||
LogMngr.getInstance().logError("[SERVICE]", "WMS GetMap Exception : Image process fails : " + e.getMessage());
|
||||
}
|
||||
if (image != null)
|
||||
try {
|
||||
writeImage(image, resp);
|
||||
} catch (Exception e) {
|
||||
OWSServiceException ose = new OWSServiceException("WMS GetMap Exception : Write IMAGE fails : " + e.getMessage());
|
||||
doc = ose.getDocument();
|
||||
LogMngr.getInstance().logError("[SERVICE]", "WMS GetMap Exception : Write IMAGE fails : " + e.getMessage());
|
||||
}
|
||||
return doc;
|
||||
}
|
||||
|
||||
private void writeImage(BufferedImage image, HttpServletResponse resp) throws Exception {
|
||||
ServletOutputStream servletOutputStream = null;
|
||||
OutputStream out = null;
|
||||
try {
|
||||
String format = this.requestObj.getFormat();
|
||||
String[] formatElement = format.split("/");
|
||||
resp.setContentType(format);
|
||||
servletOutputStream = resp.getOutputStream();
|
||||
if (format.toUpperCase().contains("PNG")) {
|
||||
O2PngWriter.writePNG(image, (OutputStream)servletOutputStream);
|
||||
} else {
|
||||
ImageIO.write(image, formatElement[1], (OutputStream)servletOutputStream);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
} finally {
|
||||
if (servletOutputStream != null) {
|
||||
servletOutputStream.flush();
|
||||
servletOutputStream.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
package com.geotwo.webserver.plugin.ows.wms.wms130.request;
|
||||
|
||||
import com.geotwo.webserver.plugin.ows.wms.request.Request;
|
||||
|
||||
public class GetCapabilitiesRequest extends Request {}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package com;
|
||||
package kr.or.geoinfo;
|
||||
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.geotwo.webserver.core.ServerInfo;
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import com.geotwo.webserver.core.service.ServiceMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerInfo;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.service.ServiceMngr;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -25,17 +25,11 @@ public class MyStartServer implements ApplicationListener<ContextRefreshedEvent>
|
|||
*/
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
// 부모 컨텍스트에도 이벤트가 발생할 수 있으므로, 최상위(루트) 컨텍스트에서만 실행되도록 확인합니다.
|
||||
// 이는 중복 실행을 방지합니다.
|
||||
if (event.getApplicationContext().getParent() == null) {
|
||||
LOGGER.info("**************************************");
|
||||
LOGGER.info("* *");
|
||||
LOGGER.info("* WMS 서버 시작 *");
|
||||
LOGGER.info("* *");
|
||||
LOGGER.info("**************WMS 서버 시작 *************");
|
||||
LOGGER.info("**************************************");
|
||||
|
||||
// 여기에 서버 시작 시 실행하고 싶은 다른 로직을 추가할 수 있습니다.
|
||||
// 예: 초기 데이터 로드, 스케줄러 시작 등
|
||||
|
||||
if (ServerConfiguration.getInstance().startServer())
|
||||
ServerInfo.getInstance().setStarted(true);
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package kr.or.geoinfo.drilling.inquiry.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
|
||||
@Mapper("drillingInquiryMapper")
|
||||
public interface DrillingInquiryMapper {
|
||||
public String getComCodes(HashMap<String, Object> params) throws SQLException;
|
||||
public List<EgovMap> drillingInquiryProjectCodes(HashMap<String, Object> params) throws SQLException;
|
||||
|
||||
public List<EgovMap> getComNameByComCode(HashMap<String, Object> params) throws SQLException;
|
||||
public void spGetMasterCompanyDistrict(HashMap<String, Object> spGetMasterCompanyDistrictParams) throws SQLException;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package kr.or.geoinfo.drilling.inquiry.service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
|
||||
|
||||
public interface DrillingInquiryService {
|
||||
JSONObject drillingInquiryProjectCodes(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
package kr.or.geoinfo.drilling.inquiry.service.impl;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import oracle.sql.TIMESTAMP;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
import kr.or.geoinfo.drilling.inquiry.service.DrillingInquiryMapper;
|
||||
import kr.or.geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||
import kr.or.geoinfo.utils.MyUtil;
|
||||
|
||||
@Service("drillingInquiryService")
|
||||
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
||||
|
||||
|
||||
@Resource(name="drillingInquiryMapper")
|
||||
private DrillingInquiryMapper drillingInquiryMapper;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 발주기관 사용자의 Gl Gm Gs Gf Codes 구한다
|
||||
*/
|
||||
private HashMap<String, Object> getOrganizationUserGlGmGsGfCodesByProjectMasterCompanyCode(String projectMasterCompanyCode) throws Exception {
|
||||
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
|
||||
params.put("comCode", projectMasterCompanyCode);
|
||||
|
||||
List<EgovMap> datas = drillingInquiryMapper.getComNameByComCode(params);
|
||||
|
||||
|
||||
if( datas.size() < 1 ) {
|
||||
throw new Exception( "발주기관의 gl gm gs gf codes를 구할 수 없습니다." );
|
||||
}
|
||||
|
||||
|
||||
EgovMap data = datas.get(0);
|
||||
|
||||
String projectMasterCompanyName = MyUtil.getStringFromObject(data.get("comName"));
|
||||
HashMap<String, Object> spGetMasterCompanyDistrictParams = new HashMap<String, Object>();
|
||||
|
||||
spGetMasterCompanyDistrictParams.put("projectMasterCompanyName", projectMasterCompanyName);
|
||||
|
||||
|
||||
drillingInquiryMapper.spGetMasterCompanyDistrict(spGetMasterCompanyDistrictParams);
|
||||
|
||||
return spGetMasterCompanyDistrictParams;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public JSONObject drillingInquiryProjectCodes(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||
|
||||
JSONObject jsonResponse = new JSONObject();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String projectMasterCompanyCode = request.getParameter("projectMasterCompanyCode");
|
||||
|
||||
if( projectMasterCompanyCode == null){
|
||||
throw new Exception( "projectMasterCompanyCode 값이 존재하지 않습니다." );
|
||||
}
|
||||
|
||||
|
||||
|
||||
HashMap<String, Object> spGetMasterCompanyDistrictParams = getOrganizationUserGlGmGsGfCodesByProjectMasterCompanyCode(projectMasterCompanyCode);
|
||||
|
||||
String masterCompanyOCode = MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gl") );
|
||||
String masterCompanyTwCode = MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gm") );
|
||||
String masterCompanyThCode = MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gs") );
|
||||
String masterCompanyName = MyUtil.getStringFromObject( spGetMasterCompanyDistrictParams.get("v_gf") );
|
||||
String sortfield = "C".equals(MyUtil.getStringFromObject(params.get("constTag"))) ? "0" : "2";
|
||||
String sorttype = "2";
|
||||
params.put("masterCompanyOCode", masterCompanyOCode);
|
||||
params.put("masterCompanyTwCode", masterCompanyTwCode);
|
||||
params.put("masterCompanyThCode", masterCompanyThCode);
|
||||
params.put("masterCompanyName", masterCompanyName);
|
||||
params.put("sortfield", sortfield);
|
||||
params.put("sorttype", sorttype);
|
||||
|
||||
|
||||
try {
|
||||
|
||||
try {
|
||||
|
||||
String keyName = "constComCodes";
|
||||
|
||||
if( params.get("constCompanyName") != null && !MyUtil.getStringFromObject(params.get("constCompanyName")).trim().isEmpty() ) {
|
||||
params.put(keyName, drillingInquiryMapper.getComCodes(params));
|
||||
} else {
|
||||
params.put(keyName, null);
|
||||
}
|
||||
|
||||
List<EgovMap> dataList = drillingInquiryMapper.drillingInquiryProjectCodes(params);
|
||||
|
||||
|
||||
|
||||
String lpszProjectCodesWithComma = "";
|
||||
for( EgovMap data : dataList ) {
|
||||
|
||||
String projectCode = MyUtil.getStringFromObject(data.get("projectCode"));
|
||||
if( projectCode != null ) {
|
||||
if( !lpszProjectCodesWithComma.equals("") ) {
|
||||
lpszProjectCodesWithComma += " OR ";
|
||||
}
|
||||
lpszProjectCodesWithComma += "PROJECT_CODE='" + projectCode + "'";
|
||||
}
|
||||
}
|
||||
|
||||
jsonResponse.put("data", lpszProjectCodesWithComma);
|
||||
return jsonResponse;
|
||||
} catch (SQLException e) {
|
||||
String strTxt =
|
||||
"---------- BUG REPORTING START ----------" + "\n" +
|
||||
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
||||
"params:[\n" + params.toString() + "\n]\n" +
|
||||
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
|
||||
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
|
||||
"---------- BUG REPORTING END ----------" + "\n" +
|
||||
"";
|
||||
System.out.println(strTxt);
|
||||
throw new Exception( "오류가 발생하였습니다." + "\n" + "SQLException" );
|
||||
}
|
||||
|
||||
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
package kr.or.geoinfo.mybatis;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationHandler;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.mybatis.spring.SqlSessionFactoryBean;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
|
||||
public class HotDeployableMybatisSessionFactoryBean extends SqlSessionFactoryBean implements DisposableBean {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(HotDeployableMybatisSessionFactoryBean.class);
|
||||
|
||||
private SqlSessionFactory proxy;
|
||||
private int interval = 500;
|
||||
private boolean running = false;
|
||||
|
||||
private Timer timer;
|
||||
private TimerTask task;
|
||||
|
||||
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
|
||||
private final Lock r = rwl.readLock();
|
||||
private final Lock w = rwl.writeLock();
|
||||
|
||||
public Resource[] mapperLocations;
|
||||
|
||||
@Override
|
||||
public void setMapperLocations(Resource[] mapperLocations) {
|
||||
super.setMapperLocations(mapperLocations);
|
||||
this.mapperLocations = mapperLocations;
|
||||
}
|
||||
|
||||
public void setInterval(int interval) {
|
||||
this.interval = interval;
|
||||
}
|
||||
|
||||
public void refresh() throws Exception {
|
||||
w.lock();
|
||||
|
||||
try {
|
||||
super.afterPropertiesSet();
|
||||
|
||||
} finally {
|
||||
w.unlock();
|
||||
}
|
||||
|
||||
LOGGER.debug("Mybatis Mapper File Reloaded!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
super.afterPropertiesSet();
|
||||
|
||||
setRefreshable();
|
||||
}
|
||||
|
||||
private void setRefreshable() {
|
||||
proxy = (SqlSessionFactory) Proxy.newProxyInstance(
|
||||
SqlSessionFactory.class.getClassLoader(),
|
||||
new Class[]{SqlSessionFactory.class},
|
||||
new InvocationHandler() {
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method,
|
||||
Object[] args) throws Throwable {
|
||||
// log.debug("method.getName() : " + method.getName());
|
||||
return method.invoke(getParentObject(), args);
|
||||
}
|
||||
});
|
||||
|
||||
task = new TimerTask() {
|
||||
private final Map<Resource, Long> map = new HashMap<Resource, Long>();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (isModified()) {
|
||||
try {
|
||||
refresh();
|
||||
} catch (NumberFormatException e) {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.error("Refresh Error Exception", e);
|
||||
} else {
|
||||
LOGGER.error("Refresh Error Exception");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.error("Refresh Error Exception", e);
|
||||
} else {
|
||||
LOGGER.error("Refresh Error Exception");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.error("Refresh Error Exception", e);
|
||||
} else {
|
||||
LOGGER.error("Refresh Error Exception");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isModified() {
|
||||
boolean retVal = false;
|
||||
|
||||
if (mapperLocations != null) {
|
||||
for (int i = 0; i < mapperLocations.length; i++) {
|
||||
Resource mappingLocation = mapperLocations[i];
|
||||
retVal |= findModifiedResource(mappingLocation);
|
||||
}
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
private boolean findModifiedResource(Resource resource) {
|
||||
boolean retVal = false;
|
||||
List<String> modifiedResources = new ArrayList<String>();
|
||||
|
||||
try {
|
||||
long modified = resource.lastModified();
|
||||
|
||||
if (map.containsKey(resource)) {
|
||||
long lastModified = map.get(resource).longValue();
|
||||
|
||||
if (lastModified != modified) {
|
||||
map.put(resource, new Long(modified));
|
||||
modifiedResources.add(resource.getDescription());
|
||||
retVal = true;
|
||||
}
|
||||
} else {
|
||||
map.put(resource, new Long(modified));
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
LOGGER.debug("Exception: " + e);
|
||||
} catch (IOException e) {
|
||||
LOGGER.debug("Exception: " + e.toString());
|
||||
} catch (Exception e) {
|
||||
LOGGER.debug("Exception: " + e);
|
||||
}
|
||||
|
||||
if (retVal) {
|
||||
LOGGER.debug("Mybatis Mapper File Changed: " + modifiedResources);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
};
|
||||
|
||||
timer = new Timer(true);
|
||||
resetInterval();
|
||||
|
||||
}
|
||||
|
||||
private Object getParentObject() throws Exception {
|
||||
r.lock();
|
||||
try {
|
||||
return super.getObject();
|
||||
} finally {
|
||||
r.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SqlSessionFactory getObject() {
|
||||
return this.proxy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends SqlSessionFactory> getObjectType() {
|
||||
return (this.proxy != null ? this.proxy.getClass() : SqlSessionFactory.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setCheckInterval(int ms) {
|
||||
interval = ms;
|
||||
|
||||
if (timer != null) {
|
||||
resetInterval();
|
||||
}
|
||||
}
|
||||
|
||||
private void resetInterval() {
|
||||
if (running) {
|
||||
timer.cancel();
|
||||
running = false;
|
||||
}
|
||||
if (interval > 0) {
|
||||
timer.schedule(task, 0, interval);
|
||||
running = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
timer.cancel();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package kr.or.geoinfo.utils;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Spring이 관리하지 않는 클래스(static 클래스 등)에서
|
||||
* Spring ApplicationContext에 접근하여 Bean을 가져올 수 있게 해주는 유틸리티 클래스.
|
||||
* * @Component 어노테이션을 통해 Spring이 이 클래스를 Bean으로 등록하고
|
||||
* ApplicationContextAware 인터페이스를 통해 ApplicationContext를 주입받습니다.
|
||||
*/
|
||||
@Component
|
||||
public class ApplicationContextUtils implements ApplicationContextAware {
|
||||
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext context) throws BeansException {
|
||||
// Spring이 초기화될 때 이 메서드를 호출하여 ApplicationContext를 저장합니다.
|
||||
applicationContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* 저장된 ApplicationContext를 반환합니다.
|
||||
* @return ApplicationContext
|
||||
*/
|
||||
public static ApplicationContext getApplicationContext() {
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bean 이름으로 Spring Bean을 조회합니다.
|
||||
* @param beanName Spring Bean의 이름
|
||||
* @return Object 타입의 Bean (형변환 필요)
|
||||
*/
|
||||
public static Object getBean(String beanName) {
|
||||
return applicationContext.getBean(beanName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bean 타입(Class)으로 Spring Bean을 조회합니다.
|
||||
* @param <T> Bean의 타입
|
||||
* @param requiredType Bean의 클래스
|
||||
* @return 제네릭으로 지정된 타입의 Bean
|
||||
*/
|
||||
public static <T> T getBean(Class<T> requiredType) {
|
||||
return applicationContext.getBean(requiredType);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,908 @@
|
|||
package kr.or.geoinfo.utils;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLDecoder;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.httpclient.NameValuePair;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
|
||||
|
||||
|
||||
public final class MyUtil {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MyUtil.class);
|
||||
|
||||
public static final String VERSION = "20240816_1430";
|
||||
|
||||
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
|
||||
|
||||
// 주석 다는 기준: https://www.oracle.com/technetwork/java/javase/tech/index-137868.html
|
||||
|
||||
/**
|
||||
* 특정 자리수의 랜덤 숫자를 생성한다.
|
||||
* @param nLength 랜덤문자의 길이
|
||||
* @return 생성된 랜덤 문자
|
||||
*/
|
||||
public static String getRandomNumber(int nLength) {
|
||||
Random generator = new Random();
|
||||
String strRandValue = "";
|
||||
|
||||
for (int i = 0; i < nLength; i++) {
|
||||
strRandValue += Integer.toString( generator.nextInt(10) );
|
||||
}
|
||||
|
||||
return strRandValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 현재 Timestamp를 반환한다
|
||||
* @return 현재 Timestamp yyyy-MM-dd hh:mm:ss
|
||||
*/
|
||||
public static String getCurrentDateTime() {
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
System.out.println(timestamp);
|
||||
|
||||
return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(timestamp);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 현재 date를 반환한다
|
||||
* @return 현재 Timestamp yyyy-MM-dd
|
||||
*/
|
||||
public static String getCurrentDate() {
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
System.out.println(timestamp);
|
||||
|
||||
return new SimpleDateFormat("yyyy-MM-dd").format(timestamp);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 현재 시각 구하기
|
||||
* @return 현재 Timestamp hh:mm:ss
|
||||
*/
|
||||
public static String getCurrentTime() {
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
System.out.println(timestamp);
|
||||
|
||||
return new SimpleDateFormat("hh:mm:ss").format(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 년 월 일 날짜 더하기
|
||||
*
|
||||
* @param dt(날짜) , y(년) , m(월), d(일)
|
||||
* @Exam addDate("2018-09-10",1,12,1) -->20200911 addDate("2018-09-10",1,-2,1) -->20200711
|
||||
* @return String
|
||||
*/
|
||||
public static String addDate(String dt, int y, int m, int d) throws Exception {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
Date date = format.parse(dt);
|
||||
cal.setTime(date);
|
||||
cal.add(Calendar.YEAR, y); //년 더하기
|
||||
cal.add(Calendar.MONTH, m); //월 더하기
|
||||
cal.add(Calendar.DATE, d); //일 더하기
|
||||
|
||||
return format.format(cal.getTime());
|
||||
}
|
||||
|
||||
/**
|
||||
* 일 구하기
|
||||
*
|
||||
* @param dt(날짜)
|
||||
* @Exam addDate("2018-09-10",1,12,1) -->20200911 addDate("2018-09-10",1,-2,1) -->20200711
|
||||
* @return int
|
||||
*/
|
||||
public static int getDate(String dt) throws Exception {
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
Calendar cal = Calendar.getInstance();
|
||||
Date date = format.parse(dt);
|
||||
cal.setTime(date);
|
||||
logger.info("getDate:" + cal.get(cal.DATE));
|
||||
return cal.get(cal.DATE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* UPDATE 문에서 문자열 타입의 필드를 추가한다.
|
||||
*
|
||||
* @param strQuery 쿼리, strColumnName 컬럼명, strTarget
|
||||
* @Exam addUpdateString("UPDATE SET ", "name", "홍길동") --> UPDATE SET name='홍길동',
|
||||
* @return String
|
||||
*/
|
||||
public static String addUpdateString(String strQuery, String strColumnName, String strValue ) {
|
||||
|
||||
if( strValue != null && strValue.isEmpty() == false && strValue.equals("undefined") == false && strValue.equals("null") == false ) {
|
||||
strQuery += strColumnName + "='" + strValue + "',";
|
||||
}
|
||||
return strQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* UPDATE 문에서 Long 타입의 필드를 추가한다.
|
||||
*
|
||||
* @param strQuery 쿼리, strColumnName 컬럼명, longTarget
|
||||
* @Exam addUpdateString("UPDATE SET ", "age", 2l) --> UPDATE SET age=2,
|
||||
* @return String
|
||||
*/
|
||||
public static String addUpdateLong(String strQuery, String strColumnName, Long longTarget ) {
|
||||
|
||||
if( longTarget != null ) {
|
||||
strQuery += strColumnName + "=" + longTarget + ",";
|
||||
}
|
||||
return strQuery;
|
||||
}
|
||||
|
||||
/*
|
||||
public static boolean isJSONValid(String test) {
|
||||
try {
|
||||
new JSONObject(test);
|
||||
} catch (JSONException ex) {
|
||||
// edited, to include @Arthur's comment
|
||||
// e.g. in case JSONArray is valid as well...
|
||||
try {
|
||||
new JSONArray(test);
|
||||
} catch (JSONException ex1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
public static String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
|
||||
{
|
||||
StringBuilder result = new StringBuilder();
|
||||
boolean first = true;
|
||||
|
||||
for (NameValuePair pair : params)
|
||||
{
|
||||
if (first)
|
||||
first = false;
|
||||
else
|
||||
result.append("&");
|
||||
|
||||
//result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
|
||||
result.append(pair.getName());
|
||||
result.append("=");
|
||||
result.append(pair.getValue());
|
||||
//result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* SHA-256으로 해싱하는 메소드
|
||||
* @param msg
|
||||
* @return
|
||||
* @throws NoSuchAlgorithmException
|
||||
*/
|
||||
public static String sha256(String msg) throws NoSuchAlgorithmException {
|
||||
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||
md.update(msg.getBytes());
|
||||
|
||||
return bytesToHex(md.digest());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 바이트를 헥스값으로 변환한다
|
||||
*
|
||||
* @param bytes
|
||||
* @return
|
||||
*/
|
||||
public static String bytesToHex(byte[] bytes) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (byte b: bytes) {
|
||||
builder.append(String.format("%02x", b));
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 세틀뱅크 수취인 조회 서비스 HTML문서에서 특정 값 추출하기
|
||||
* @param html_line
|
||||
* @param inputName
|
||||
* @return
|
||||
*/
|
||||
public static String parseInpuValueForSettleBankResponse(String html_line, String inputName) {
|
||||
|
||||
String[] strArrValue = html_line.split("name=\"" + inputName + "\" value=");
|
||||
String strValue = "";
|
||||
|
||||
if( strArrValue.length == 2 ) {
|
||||
strValue = strArrValue[1].replaceAll("[\"|>|\\r\\n|\\n\\r|\\r|\\n|\\s|\\+)]","");
|
||||
try {
|
||||
//logger.info("Encoding EUC-KR:" + URLDecoder.decode(strValue, "EUC-KR"));
|
||||
//logger.info("Encoding UTF-8:" + URLDecoder.decode(strValue, "UTF-8"));
|
||||
strValue = URLDecoder.decode(strValue, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e2) {
|
||||
// TODO Auto-generated catch block
|
||||
e2.printStackTrace();
|
||||
}
|
||||
}
|
||||
return strValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 숫자 외 소수점을 포함한 모든 특수문자를 제거해준다.
|
||||
*
|
||||
*/
|
||||
public static String removeSpecialChractersNumber( String decimalNumber ) {
|
||||
decimalNumber = decimalNumber.replaceAll("[^0-9]", ""); //숫자 외 모두 제거한다.
|
||||
return decimalNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* 수수점을 제외한 나머지 특수문자를 제거해준다. 그리고 소수점은 1개만 들어가도록 해준다.
|
||||
*
|
||||
*/
|
||||
public static String removeSpecialChractersDecimalNumber( String decimalNumber ) {
|
||||
decimalNumber = decimalNumber.replaceAll("[^0-9.\\-]", ""); //숫자와 쩜.-말고는 제거한다.
|
||||
// 소수점 1개만 넣도록 하기
|
||||
int nDotIdx = decimalNumber.indexOf(".");
|
||||
if( nDotIdx > -1 ) {
|
||||
String[] arrSplit = decimalNumber.split("\\.");
|
||||
if( arrSplit.length != 0) {
|
||||
decimalNumber = "";
|
||||
}
|
||||
for( int i = 0; i < arrSplit.length ; i++ ) {
|
||||
decimalNumber += arrSplit[i];
|
||||
if( i == 0 ) {
|
||||
decimalNumber += ".";
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("removeSpecialChractersDecimalNumber() decimalNumber:" + decimalNumber);
|
||||
return decimalNumber;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 소수점자리수가 3자리 이상이면 2자리까지만 남기고 나머지는 지운다.
|
||||
* @param decimalNumber 소수점 자리 n개 이상 인 경우, 지울 숫자가 들어있는 문자열
|
||||
* @param nLimitDecimalNumber 허용할 소수점 자
|
||||
* @return
|
||||
*/
|
||||
public static String removeOverDecimalNumber( String decimalNumber, int nLimitDecimalNumber ) {
|
||||
logger.error("decimalNumber:" + decimalNumber);
|
||||
int nDotIdx = decimalNumber.indexOf(".");
|
||||
if( nDotIdx > -1 ) {
|
||||
String[] arrSplit = decimalNumber.split("\\.");
|
||||
if( arrSplit[1].length() > nLimitDecimalNumber ) {
|
||||
return arrSplit[0] + "." + arrSplit[1].substring(0,2);
|
||||
}
|
||||
}
|
||||
logger.error("decimalNumber:" + decimalNumber);
|
||||
return decimalNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1,000 단위마다 콤마를 찍는다.
|
||||
* @param bdAmount
|
||||
* @return
|
||||
*/
|
||||
public static String addComma(BigDecimal bdAmount) {
|
||||
return addComma(bdAmount.toPlainString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 1,000 단위마다 콤마를 찍는다.
|
||||
* @param doubleAmount
|
||||
* @return
|
||||
*/
|
||||
public static String addComma(Double doubleAmount) {
|
||||
return addComma(BigDecimal.valueOf(doubleAmount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 1,000 단위마다 콤마를 찍는다.
|
||||
* @param longAmount
|
||||
* @return
|
||||
*/
|
||||
public static String addComma(Long longAmount) {
|
||||
return addComma(BigDecimal.valueOf(longAmount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 1,000 단위마다 콤마를 찍는다.
|
||||
* @param strAmount
|
||||
* @return
|
||||
*/
|
||||
public static String addComma(String strAmount) {
|
||||
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
|
||||
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
|
||||
|
||||
if( isNumeric(strAmount) == false ) {
|
||||
return strAmount;
|
||||
}
|
||||
|
||||
int nDotIndex = strAmount.indexOf(".");
|
||||
|
||||
|
||||
symbols.setGroupingSeparator(',');
|
||||
formatter.setDecimalFormatSymbols(symbols);
|
||||
if( nDotIndex > -1 ) {
|
||||
return formatter.format(Double.parseDouble( strAmount ));
|
||||
} else {
|
||||
return formatter.format(Long.parseLong( strAmount ));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 숫자에서 끝에 0000을 제거한다.
|
||||
*
|
||||
*/
|
||||
public static String trimTrailingZero( String decimalNumber ) {
|
||||
decimalNumber = decimalNumber.replaceAll("[^0-9.\\-]", ""); //숫자와 쩜.-말고는 제거한다.
|
||||
decimalNumber = decimalNumber.indexOf(".") < 0 ? decimalNumber : decimalNumber.replaceAll("0*$", "").replaceAll("\\.$", "");
|
||||
logger.info("trimTrailingZero() decimalNumber:" + decimalNumber);
|
||||
return decimalNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* SQL 인젝션 방어를 위해 특수문자를 제거한다.
|
||||
* @param myString
|
||||
* @return
|
||||
*/
|
||||
public static String removeSQLInjectionSpecialCharacter(String myString) {
|
||||
if( myString == null ) {
|
||||
return myString;
|
||||
}
|
||||
myString = myString.replaceAll( "<|>|\\(|\\)|'|\"|\\|;|=|\\+|\\||&|#|\\.\\.", " ");
|
||||
|
||||
return myString;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UUID(GUID)를 얻는다.
|
||||
* @return 구한 UUID(GUID) 값.
|
||||
*/
|
||||
public static String getUuid() {
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
return uuid;
|
||||
}
|
||||
|
||||
/** 숫자인지 아닌지 확인한다. */
|
||||
public static boolean isNumeric(String strNum) {
|
||||
if (strNum == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
double d = Double.parseDouble(strNum);
|
||||
} catch (NumberFormatException nfe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isNumeric(Double num) {
|
||||
if (num == null) {
|
||||
return false;
|
||||
}
|
||||
return isNumeric(num.toString());
|
||||
}
|
||||
|
||||
public static boolean isNumeric(Integer num) {
|
||||
if (num == null) {
|
||||
return false;
|
||||
}
|
||||
return isNumeric(num.toString());
|
||||
}
|
||||
|
||||
public static boolean isNumeric(Long num) {
|
||||
if (num == null) {
|
||||
return false;
|
||||
}
|
||||
return isNumeric(num.toString());
|
||||
}
|
||||
|
||||
/** Long형태의 숫자인지 아닌지 확인한다. */
|
||||
public static boolean isNumericForLong(String strNum) {
|
||||
if (strNum == null) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
Long lValue = Long.parseLong(strNum);
|
||||
} catch (NumberFormatException nfe) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public static Integer getIntegerFromObject(Object obj) {
|
||||
if (obj instanceof Integer ) {
|
||||
return (Integer) obj;
|
||||
} else if (obj instanceof String ) {
|
||||
return Integer.parseInt((String) obj);
|
||||
} else if (obj instanceof Long) {
|
||||
return ((Long) obj).intValue();
|
||||
} else if (obj instanceof Double) {
|
||||
return ((Long)Math.round((Double)obj)).intValue();
|
||||
} else if (obj instanceof BigDecimal) {
|
||||
return ((BigDecimal)obj).intValue();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Long getLongFromObject(Object obj) {
|
||||
if (obj instanceof String ) {
|
||||
String strObj = (String) obj;
|
||||
if( isNumeric(strObj) ) {
|
||||
return Long.parseLong((String) obj);
|
||||
}
|
||||
} else if (obj instanceof Integer) {
|
||||
return ((Integer) obj).longValue();
|
||||
} else if (obj instanceof Long) {
|
||||
return (Long) obj;
|
||||
} else if (obj instanceof Double) {
|
||||
return ((Long)Math.round((Double)obj));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Double getDoubleFromObject(Object obj) throws Exception {
|
||||
String str = getStringFromObject(obj);
|
||||
str = removeSpecialChractersDecimalNumber(str);
|
||||
return Double.parseDouble((String) str);
|
||||
}
|
||||
|
||||
public static BigDecimal getBigDecimalFromObject(Object obj) throws Exception {
|
||||
return BigDecimal.valueOf(getDoubleFromObject(obj));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getStringFromObject(Object obj) throws Exception {
|
||||
if (obj == null) {
|
||||
return null;
|
||||
} else if (obj instanceof String ) {
|
||||
return (String) obj;
|
||||
} else if (obj instanceof Integer) {
|
||||
return ((Integer)obj).toString();
|
||||
} else if (obj instanceof Long) {
|
||||
return ((Long) obj).toString();
|
||||
} else if (obj instanceof Float) {
|
||||
return ((Float)obj).toString();
|
||||
} else if (obj instanceof Double) {
|
||||
return ((Double)obj).toString();
|
||||
} else if (obj instanceof BigDecimal) {
|
||||
return ((BigDecimal)obj).toPlainString();
|
||||
} else if (obj instanceof Date) {
|
||||
return ((Date)obj).toString();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static org.json.simple.JSONObject getJSONObjectFromObject(Object obj) {
|
||||
if (obj instanceof org.json.simple.JSONObject ) {
|
||||
return (org.json.simple.JSONObject) obj;
|
||||
} else if (obj instanceof String ) {
|
||||
JSONParser parser = new JSONParser();
|
||||
try {
|
||||
obj = parser.parse( (String) obj );
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return (org.json.simple.JSONObject) obj;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static org.json.simple.JSONArray getJSONArrayFromObject(Object obj) {
|
||||
if (obj instanceof org.json.simple.JSONArray ) {
|
||||
return (org.json.simple.JSONArray) obj;
|
||||
} else if (obj instanceof String ) {
|
||||
JSONParser parser = new JSONParser();
|
||||
try {
|
||||
obj = parser.parse( (String) obj );
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return (org.json.simple.JSONArray) obj;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Boolean getBooleanFromObject(Object obj) {
|
||||
|
||||
if (obj instanceof String ) {
|
||||
return Boolean.parseBoolean( ((String)obj).trim() );
|
||||
} else if (obj instanceof Boolean) {
|
||||
return (Boolean)obj;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a URI String into Name-Value Collection
|
||||
* 쿼리스트링을 분석해서 Map형태로 return해준다.
|
||||
* @param query
|
||||
* @return query string name-value Map.
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
public static Map<String, String> splitQuery(String query, String token) throws UnsupportedEncodingException {
|
||||
Map<String, String> query_pairs = new LinkedHashMap<String, String>();
|
||||
String[] pairs = query.split(token);
|
||||
for (String pair : pairs) {
|
||||
int idx = pair.indexOf("=");
|
||||
query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
|
||||
}
|
||||
return query_pairs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static SortedMap<String,String[]> getParameterMap(HttpServletRequest request) {
|
||||
|
||||
SortedMap<String,String[]> sMap = Collections.synchronizedSortedMap
|
||||
( new TreeMap<String,String[]>(request.getParameterMap()));
|
||||
|
||||
String params = "\n--------------------------------------------------------------\n" +
|
||||
MyUtil.getBASEURL(request) + request.getRequestURI() + " IN:" +
|
||||
"\n--------------------------------------------------------------\n";
|
||||
synchronized(sMap) {
|
||||
for(String key : sMap.keySet()) {
|
||||
String[] value = sMap.get(key);
|
||||
for(int i=0; i<value.length; i++) {
|
||||
params += key + "[" + value[i] + "]\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
params += "--------------------------------------------------------------\n";
|
||||
logger.info(params);
|
||||
|
||||
return sMap;
|
||||
}
|
||||
|
||||
public static String getParametersForLog(HttpServletRequest request) {
|
||||
|
||||
SortedMap<String,String[]> sMap = Collections.synchronizedSortedMap
|
||||
( new TreeMap<String,String[]>(request.getParameterMap()));
|
||||
|
||||
String params = "\n--------------------------------------------------------------\n" +
|
||||
MyUtil.getBASEURL(request) + request.getRequestURI() + " IN:" +
|
||||
"\n--------------------------------------------------------------\n";
|
||||
synchronized(sMap) {
|
||||
for(String key : sMap.keySet()) {
|
||||
String[] value = sMap.get(key);
|
||||
for(int i=0; i<value.length; i++) {
|
||||
params += key + "[" + value[i] + "]\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
params += "--------------------------------------------------------------\n";
|
||||
return params;
|
||||
}
|
||||
|
||||
|
||||
public static String getBASEURL(HttpServletRequest request) {
|
||||
|
||||
String baseUrl = ServletUriComponentsBuilder.fromRequestUri(request)
|
||||
.replacePath(null)
|
||||
.build()
|
||||
.toUriString();
|
||||
|
||||
//첫번째 글자가 아닌경우,
|
||||
if(
|
||||
(baseUrl.indexOf("http://localhost") == -1 && baseUrl.indexOf("http://127.") == -1) ||
|
||||
(baseUrl.indexOf("http://localhost") != 0 && baseUrl.indexOf("http://127.") != 0) ) {
|
||||
baseUrl = baseUrl.replace("http","https");
|
||||
}
|
||||
return baseUrl;
|
||||
}
|
||||
|
||||
public static String getRefererBASEURL(HttpServletRequest request) {
|
||||
|
||||
|
||||
String referer = request.getHeader("Referer");
|
||||
|
||||
if( referer == null ) {
|
||||
return referer;
|
||||
}
|
||||
String baseUrl = ServletUriComponentsBuilder.fromUriString(referer).replacePath(null)
|
||||
.build()
|
||||
.toUriString();
|
||||
|
||||
//첫번째 글자가 아닌경우,
|
||||
if(
|
||||
(baseUrl.indexOf("http://localhost") == -1 && baseUrl.indexOf("http://127.") == -1) ||
|
||||
(baseUrl.indexOf("http://localhost") != 0 && baseUrl.indexOf("http://127.") != 0) ) {
|
||||
baseUrl = baseUrl.replace("http","https");
|
||||
}
|
||||
return baseUrl;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 소수점 첫째 자리가 0인 경우 표시하지 않기.
|
||||
* @param number
|
||||
* @return
|
||||
*/
|
||||
public static String noDisplayDecimalPlacesIfZero(double number) {
|
||||
DecimalFormat df=new DecimalFormat("#.##");
|
||||
return df.format(number);
|
||||
}
|
||||
|
||||
/**
|
||||
* strJSON로 부터 JSONObject를 추출한다.
|
||||
* @param strJSON
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static JSONObject getJSONObjectFromStrJSON(String strJSON) throws Exception {
|
||||
JSONParser parser = new JSONParser();
|
||||
JSONObject jsonObject = null;
|
||||
try {
|
||||
Object obj = parser.parse(strJSON);
|
||||
jsonObject = (JSONObject) obj;
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (jsonObject == null) {
|
||||
throw new Exception("요청이 잘 못 되었습니다. jsonObject is null");
|
||||
}
|
||||
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 특정 소수점을 버림 처리한다.
|
||||
* @param strAmount 문자열 형태로 들어간 소수
|
||||
* @param decimalPlace 이 값이 2라면 1.2371234 -> 1.23
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static Double floor(String strAmount, int decimalPlace) throws Exception {
|
||||
|
||||
Double dPoint = Double.parseDouble(strAmount);
|
||||
|
||||
String[] arrSplitedDot = strAmount.split("\\.");
|
||||
int nLength = arrSplitedDot.length;
|
||||
if (arrSplitedDot.length == 2) {
|
||||
if (MyUtil.isNumeric(arrSplitedDot[1])) {
|
||||
|
||||
//소수부 끝에 0을 제거해준다.
|
||||
arrSplitedDot[1] = arrSplitedDot[1].replaceAll("0+$", "");
|
||||
|
||||
int nDecimalLength = arrSplitedDot[1].length();
|
||||
if( nDecimalLength >= decimalPlace ) {
|
||||
String strDecimal = "1";
|
||||
for (int i = 0; i < decimalPlace; i++) {
|
||||
strDecimal += "0";
|
||||
}
|
||||
dPoint = Math.floor(dPoint*Long.valueOf(strDecimal)) / Long.valueOf(strDecimal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dPoint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* days안에는 "월" 또는 "월,수,금" 이런 요일에 대한 한글문자가 들어가고 오늘이 주어진 요일 안에 포함되는지 여부를 알아낸다.
|
||||
*
|
||||
* @param days "월" 또는 "월,수,금'과 같이 요일이 한글로 들어있다.
|
||||
* @return 만약 days에 "월"이 들어가 있고 오늘이 월요일이라면 true를 return한다.
|
||||
*/
|
||||
public static Boolean isContainDayOfWeekToday( String days ) {
|
||||
|
||||
// 1. Date 생성 / 현재 날짜
|
||||
Date currentDate = new Date();
|
||||
System.out.println(currentDate);
|
||||
|
||||
// 2. Calendar 생성
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(currentDate);
|
||||
|
||||
// 3. 텍스트 요일 구하기 (숫자)
|
||||
int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK);
|
||||
|
||||
if( dayOfWeekNumber == 1 ) {
|
||||
if( days.indexOf("일") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 2 ) {
|
||||
if( days.indexOf("월") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 3 ) {
|
||||
if( days.indexOf("화") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 4 ) {
|
||||
if( days.indexOf("수") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 5 ) {
|
||||
if( days.indexOf("목") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 6 ) {
|
||||
if( days.indexOf("금") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
} else if( dayOfWeekNumber == 7 ) {
|
||||
if( days.indexOf("토") > -1 ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 현재 시각이 timeRange에 명시한 시간대 안에 포함되는지 여부를 return 한다.
|
||||
* @param timeRange 01~14 -> 오전 1시부터 오후 2시를 의미하며 ~ 구분자를 사용한다.
|
||||
* @return 현재 시각이 해당 시간대 내에 포함되면 true를 return 한다.
|
||||
* @throws Exception timeRange이 형식에 맞지 않으면 Exception이 발생한다.
|
||||
*/
|
||||
public static Boolean isInTimeRange( String timeRange ) throws Exception {
|
||||
|
||||
String[] arrTimeRange = timeRange.split("~");
|
||||
if( arrTimeRange.length != 2 ) {
|
||||
throw new Exception("timeRange이 형식에 맞지 않습니다.");
|
||||
}
|
||||
|
||||
if( MyUtil.isNumeric(arrTimeRange[0]) == false ) {
|
||||
throw new Exception("timeRange이 형식에 맞지 않습니다 - 1");
|
||||
}
|
||||
|
||||
if( MyUtil.isNumeric(arrTimeRange[1]) == false ) {
|
||||
throw new Exception("timeRange이 형식에 맞지 않습니다 - 1");
|
||||
}
|
||||
|
||||
|
||||
Date currentDate = new Date();
|
||||
// 포맷팅 정의
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("HH");
|
||||
// 포맷팅 적용
|
||||
String formatedNow = formatter.format(currentDate);
|
||||
|
||||
Integer currentHour = MyUtil.getIntegerFromObject( formatedNow );
|
||||
Integer rangeStart = MyUtil.getIntegerFromObject( arrTimeRange[0] );
|
||||
Integer rangeEnd = MyUtil.getIntegerFromObject( arrTimeRange[0] );
|
||||
|
||||
if( rangeStart <= rangeEnd && rangeEnd <= rangeEnd ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Oracle 11g의 CLOB값을 String 값으로 변환한다.
|
||||
* @param clob
|
||||
* @return
|
||||
* @throws SQLException
|
||||
*/
|
||||
public static String ClobToString(java.sql.Clob clob) throws SQLException {
|
||||
String clobData = "";
|
||||
if (clob != null) {
|
||||
java.io.Reader reader = clob.getCharacterStream();
|
||||
java.io.BufferedReader br = new java.io.BufferedReader(reader);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String line;
|
||||
try {
|
||||
while ((line = br.readLine()) != null) {
|
||||
sb.append(line);
|
||||
sb.append("\n"); // 필요에 따라 줄바꿈 추가
|
||||
}
|
||||
clobData = sb.toString();
|
||||
} catch (java.io.IOException e) {
|
||||
e.printStackTrace();
|
||||
// 오류 처리
|
||||
} finally {
|
||||
try {
|
||||
br.close();
|
||||
reader.close();
|
||||
} catch (java.io.IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return clobData;
|
||||
}
|
||||
|
||||
// JSONObject를 HashMap으로 변환
|
||||
public static HashMap<String, Object> JSONObjectToHashMap( JSONObject jsonObject ) {
|
||||
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
for (Object key : jsonObject.keySet()) {
|
||||
String keyStr = (String) key;
|
||||
Object value = jsonObject.get(keyStr);
|
||||
params.put(keyStr, value);
|
||||
}
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* 문자열의 공백을 제거 후 return한다
|
||||
* @param target 공백을 제거할 대상
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String removeBlank( Object target ) throws Exception {
|
||||
|
||||
String str = getStringFromObject( target );
|
||||
|
||||
if( str != null ) {
|
||||
str = str.replaceAll("\\s", "");
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
public static String removeBlank( String target ) throws Exception {
|
||||
return removeBlank( (Object) target );
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getIpAddress( HttpServletRequest request ) throws Exception {
|
||||
String clientIp = "";
|
||||
clientIp = request.getHeader("X-Forwarded-For");
|
||||
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("Proxy-Client-IP");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("WL-Proxy-Client-IP");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("HTTP_CLIENT_IP");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("HTTP_X_FORWARDED_FOR");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("X-Real-IP");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("X-RealIP");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getHeader("REMOTE_ADDR");
|
||||
}
|
||||
if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
|
||||
clientIp = request.getRemoteAddr();
|
||||
}
|
||||
|
||||
return clientIp;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
package com.geotwo.webserver.core;
|
||||
package kr.or.geoinfo.webserver.core;
|
||||
|
||||
import com.geotwo.webserver.core.cache.ImgCacheMngr;
|
||||
import com.geotwo.webserver.core.coverage.O2DemLayerMngr;
|
||||
import com.geotwo.webserver.core.coverage.O2ImgLayerMngr;
|
||||
import com.geotwo.webserver.core.coverage.WpsCovStoreMngr;
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.Map;
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.O2DemLayer;
|
||||
import com.geotwo.webserver.core.tile.tms.TMSMngr;
|
||||
import com.geotwo.webserver.core.tile.wmts.WMTSMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.GWaveStoreMngr;
|
||||
import com.geotwo.webserver.core.vector.JdbcStoreMngr;
|
||||
import com.geotwo.webserver.core.vector.ShpStoreMngr;
|
||||
import com.geotwo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.cache.ImgCacheMngr;
|
||||
import kr.or.geoinfo.webserver.core.coverage.O2DemLayerMngr;
|
||||
import kr.or.geoinfo.webserver.core.coverage.O2ImgLayerMngr;
|
||||
import kr.or.geoinfo.webserver.core.coverage.WpsCovStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.Map;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2DemLayer;
|
||||
import kr.or.geoinfo.webserver.core.tile.tms.TMSMngr;
|
||||
import kr.or.geoinfo.webserver.core.tile.wmts.WMTSMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.GWaveStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.JdbcStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.ShpStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core;
|
||||
package kr.or.geoinfo.webserver.core;
|
||||
|
||||
public class ServerInfo
|
||||
{
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package com.geotwo.webserver.core.cache;
|
||||
package kr.or.geoinfo.webserver.core.cache;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.cache.ic.CacheFormat;
|
||||
import com.geotwo.webserver.core.cache.ic.CacheLevel;
|
||||
import com.geotwo.webserver.core.cache.ic.CacheLevelSet;
|
||||
import com.geotwo.webserver.core.cache.ic.ImgCacheLayer;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.crs.CRSMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.cache.ic.CacheFormat;
|
||||
import kr.or.geoinfo.webserver.core.cache.ic.CacheLevel;
|
||||
import kr.or.geoinfo.webserver.core.cache.ic.CacheLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.cache.ic.ImgCacheLayer;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.crs.CRSMngr;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.cache;
|
||||
package kr.or.geoinfo.webserver.core.cache;
|
||||
|
||||
import com.geotwo.webserver.core.cache.util.FileComparator;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.cache.util.FileComparator;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.cache.ic;
|
||||
package kr.or.geoinfo.webserver.core.cache.ic;
|
||||
|
||||
public class CacheFormat {
|
||||
int width = 256;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.cache.ic;
|
||||
package kr.or.geoinfo.webserver.core.cache.ic;
|
||||
|
||||
import java.io.File;
|
||||
import javax.management.modelmbean.XMLParseException;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.cache.ic;
|
||||
package kr.or.geoinfo.webserver.core.cache.ic;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.TreeMap;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.cache.ic;
|
||||
package kr.or.geoinfo.webserver.core.cache.ic;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import org.geotools.geometry.jts.ReferencedEnvelope;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.cache.util;
|
||||
package kr.or.geoinfo.webserver.core.cache.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Comparator;
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
package com.geotwo.webserver.core.coverage;
|
||||
package kr.or.geoinfo.webserver.core.coverage;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerInfo;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.O2DemLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerInfo;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2DemLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
package com.geotwo.webserver.core.coverage;
|
||||
package kr.or.geoinfo.webserver.core.coverage;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerInfo;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.O2ImgLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerInfo;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2ImgLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
package com.geotwo.webserver.core.coverage;
|
||||
package kr.or.geoinfo.webserver.core.coverage;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.O2DemLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2DemLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.coverage.o2layer;
|
||||
package kr.or.geoinfo.webserver.core.coverage.o2layer;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.coverage.o2layer;
|
||||
package kr.or.geoinfo.webserver.core.coverage.o2layer;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.crs.CRSMngr;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.crs.CRSMngr;
|
||||
import java.io.File;
|
||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.coverage.o2layer;
|
||||
package kr.or.geoinfo.webserver.core.coverage.o2layer;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.io.File;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.coverage.o2layer;
|
||||
package kr.or.geoinfo.webserver.core.coverage.o2layer;
|
||||
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.io.File;
|
||||
import java.util.TreeMap;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.coverage.o2layer;
|
||||
package kr.or.geoinfo.webserver.core.coverage.o2layer;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Point;
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.init.ConnMngr;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2SqlDialect;
|
||||
import com.geotwo.webserver.core.vector.jdbc.ns.NonSpatialDialect;
|
||||
import com.geotwo.webserver.core.vector.jdbc.oracle.OracleDialect;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.init.ConnMngr;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2SqlDialect;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.ns.NonSpatialDialect;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.oracle.OracleDialect;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import java.io.IOException;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.LineString;
|
||||
import com.vividsolutions.jts.geom.MultiLineString;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import org.opengis.filter.identity.FeatureId;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.io.IOException;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.feature;
|
||||
package kr.or.geoinfo.webserver.core.feature;
|
||||
|
||||
import com.geotwo.webserver.core.vector.jdbc.oracle.OracleDialect;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.oracle.OracleDialect;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import java.io.IOException;
|
||||
import java.util.NoSuchElementException;
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package com.geotwo.webserver.core.init;
|
||||
package kr.or.geoinfo.webserver.core.init;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.ConnAltibase;
|
||||
import com.geotwo.webserver.core.init.conn.ConnJDBC;
|
||||
import com.geotwo.webserver.core.init.conn.ConnKairos;
|
||||
import com.geotwo.webserver.core.init.conn.ConnMySQL;
|
||||
import com.geotwo.webserver.core.init.conn.ConnOracle;
|
||||
import com.geotwo.webserver.core.init.conn.ConnPostGIS;
|
||||
import com.geotwo.webserver.core.init.conn.ConnTibero;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnAltibase;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnJDBC;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnKairos;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnMySQL;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnOracle;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnPostGIS;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.ConnTibero;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.init;
|
||||
package kr.or.geoinfo.webserver.core.init;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
@ -15,12 +15,12 @@ import org.xml.sax.Attributes;
|
|||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.cache.LogCacheManager;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.render.RenderMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.cache.LogCacheManager;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.RenderMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
|
||||
public class ServerConfiguration {
|
||||
private static ServerConfiguration instance = null;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnAltibase extends ConnJDBC {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnKairos extends ConnJDBC {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnMySQL extends ConnJDBC {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnOracle extends ConnJDBC {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnPostGIS extends ConnJDBC {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn;
|
||||
package kr.or.geoinfo.webserver.core.init.conn;
|
||||
|
||||
import com.geotwo.webserver.core.init.conn.util.FieldSQL;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.init.conn.util.FieldSQL;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnTibero extends ConnJDBC {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.init.conn.util;
|
||||
package kr.or.geoinfo.webserver.core.init.conn.util;
|
||||
|
||||
public class FieldInfo {
|
||||
private FieldSQL.FieldType type;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.init.conn.util;
|
||||
package kr.or.geoinfo.webserver.core.init.conn.util;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.jdbc.O2DSFactory;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.log;
|
||||
package kr.or.geoinfo.webserver.core.log;
|
||||
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Properties;
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
package com.geotwo.webserver.core.map;
|
||||
package kr.or.geoinfo.webserver.core.map;
|
||||
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.GroupLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.O2DemLayer;
|
||||
import com.geotwo.webserver.core.map.layer.O2ImgLayer;
|
||||
import com.geotwo.webserver.core.map.layer.WCSLayer;
|
||||
import com.geotwo.webserver.core.map.layer.WMSLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.GroupLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2DemLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2ImgLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.WCSLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.WMSLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
|
||||
public class LayerFactory {
|
||||
public enum LayerType {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.map;
|
||||
package kr.or.geoinfo.webserver.core.map;
|
||||
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.geotwo.webserver.core.map;
|
||||
package kr.or.geoinfo.webserver.core.map;
|
||||
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import com.geotwo.webserver.core.vector.o2wps.O2WpsLayerSet;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.WpsVecStoreMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.o2wps.O2WpsLayerSet;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Map {
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.render.RefineRenderStyleVisitor;
|
||||
import com.geotwo.webserver.core.render.StyleMngr;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.RefineRenderStyleVisitor;
|
||||
import kr.or.geoinfo.webserver.core.render.StyleMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.util.ArrayList;
|
||||
import org.geotools.geometry.jts.ReferencedEnvelope;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.crs.CRSMngr;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.crs.CRSMngr;
|
||||
import java.util.Date;
|
||||
import org.geotools.geometry.jts.ReferencedEnvelope;
|
||||
import org.geotools.referencing.CRS;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.net.URL;
|
||||
|
||||
public abstract class LinkLayer extends Layer {
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.render.ExtractRasterStyleVisitor;
|
||||
import com.geotwo.webserver.core.render.StyleMngr;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.ExtractRasterStyleVisitor;
|
||||
import kr.or.geoinfo.webserver.core.render.StyleMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import java.io.IOException;
|
||||
import org.geotools.geometry.jts.ReferencedEnvelope;
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.map.layer;
|
||||
package kr.or.geoinfo.webserver.core.map.layer;
|
||||
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import org.geotools.styling.Description;
|
||||
import org.geotools.styling.Rule;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import org.geotools.styling.ChannelSelection;
|
||||
import org.geotools.styling.ColorMap;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Graphics2D;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
|
@ -1,27 +1,28 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.GroupLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.map.layer.LinkLayer;
|
||||
import com.geotwo.webserver.core.map.layer.O2DemLayer;
|
||||
import com.geotwo.webserver.core.map.layer.O2ImgLayer;
|
||||
import com.geotwo.webserver.core.map.layer.WMSLayer;
|
||||
import com.geotwo.webserver.core.render.io.RenderFeatureSource;
|
||||
import com.geotwo.webserver.core.render.layer.ExFeatureLayer;
|
||||
import com.geotwo.webserver.core.render.layer.ExO2ImgLayer;
|
||||
import com.geotwo.webserver.core.render.layer.ExWMSLayer;
|
||||
import com.geotwo.webserver.core.render.style.MapStyle;
|
||||
import com.geotwo.webserver.core.render.style.label.LabelCacheEx;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import com.geotwo.webserver.core.vector.crs.CRSMngr;
|
||||
import kr.or.geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerLevelSet;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.GroupLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.LinkLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2DemLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2ImgLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.WMSLayer;
|
||||
import kr.or.geoinfo.webserver.core.render.io.RenderFeatureSource;
|
||||
import kr.or.geoinfo.webserver.core.render.layer.ExFeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.render.layer.ExO2ImgLayer;
|
||||
import kr.or.geoinfo.webserver.core.render.layer.ExWMSLayer;
|
||||
import kr.or.geoinfo.webserver.core.render.style.MapStyle;
|
||||
import kr.or.geoinfo.webserver.core.render.style.label.LabelCacheEx;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.vector.crs.CRSMngr;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import java.awt.Color;
|
||||
|
|
@ -74,12 +75,14 @@ import org.opengis.feature.simple.SimpleFeatureType;
|
|||
import org.opengis.feature.type.Name;
|
||||
import org.opengis.filter.Filter;
|
||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
public class RenderMngr {
|
||||
static boolean useImageAntialias = true;
|
||||
static boolean useTextAntialias = true;
|
||||
static Interpolation interpolationMethod = Interpolation.NN;
|
||||
static ThreadPoolExecutor RENDERING_POOL;
|
||||
|
||||
|
||||
public static BufferedImage productMap(AVList params) throws Exception {
|
||||
String[] layers = (String[])params.getValue("request.wms.layers");
|
||||
String[] styles = (String[])params.getValue("request.wms.styles");
|
||||
|
|
@ -145,6 +148,7 @@ public class RenderMngr {
|
|||
|
||||
private static void addRenderLayers(ArrayList<org.geotools.map.Layer> targetLayers, Layer[] layers, String[] styles, AVList params) throws Exception {
|
||||
int i = 0;
|
||||
System.out.println("private static void addRenderLayers(ArrayList<org.geotools.map.Layer> targetLayers, Layer[] layers, String[] styles, AVList params) throws Exception { layers.length:" + layers.length);
|
||||
while (i < layers.length) {
|
||||
RenderMngr.makeNamedLayer(targetLayers, layers[i], styles[i], params);
|
||||
++i;
|
||||
|
|
@ -287,7 +291,7 @@ public class RenderMngr {
|
|||
if (layer instanceof FeatureLayer) {
|
||||
Filter filter = (Filter)params.getValue("request.wms.filter");
|
||||
Style layerStyle = ((FeatureLayer)layer).getRenderStyle(styleName);
|
||||
RenderMngr.addFeatureLayer(targetLayers, layerStyle, (FeatureLayer)layer, filter);
|
||||
RenderMngr.addFeatureLayer(targetLayers, layerStyle, (FeatureLayer)layer, filter); // 여기를 주석처리하면 쩜이 박히지 않은 이미지만 생성된다.
|
||||
} else if (layer instanceof GroupLayer) {
|
||||
GroupLayer groupLayer = (GroupLayer)layer;
|
||||
Filter filter = (Filter)params.getValue("request.wms.filter");
|
||||
|
|
@ -359,6 +363,11 @@ public class RenderMngr {
|
|||
LinkedList<MapStyle> styleList = new LinkedList<MapStyle>();
|
||||
for (FeatureTypeStyle fStyle : style.featureTypeStyles()) {
|
||||
if (fStyle.featureTypeNames().isEmpty()) {
|
||||
System.out.println(
|
||||
"layer.getLayerType(): [" + layer.getLayerType() + "]\n" +
|
||||
"layer.getServerName(): [" + layer.getServerName() + "]\n" +
|
||||
"layer.getSourceName(): [" + layer.getSourceName() + "]\n"
|
||||
);
|
||||
RenderMngr.addFeatureTypeStyleList(styleList, layer.getLayerType(), layer.getServerName(), layer.getSourceName(), fStyle);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
package com.geotwo.webserver.core.render;
|
||||
package kr.or.geoinfo.webserver.core.render;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.feature.GeometryMngr;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import com.geotwo.webserver.core.render.sld.SLDConfiguration110;
|
||||
import com.geotwo.webserver.core.render.sld.SLDParser100;
|
||||
import com.geotwo.webserver.core.render.sld.SLDTransformer110;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.feature.GeometryMngr;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.render.sld.SLDConfiguration110;
|
||||
import kr.or.geoinfo.webserver.core.render.sld.SLDParser100;
|
||||
import kr.or.geoinfo.webserver.core.render.sld.SLDTransformer110;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.io;
|
||||
package kr.or.geoinfo.webserver.core.render.io;
|
||||
|
||||
import ar.com.hjg.pngj.FilterType;
|
||||
import ar.com.hjg.pngj.IImageLine;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.io;
|
||||
package kr.or.geoinfo.webserver.core.render.io;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Point;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.io;
|
||||
package kr.or.geoinfo.webserver.core.render.io;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
|
@ -14,6 +14,12 @@ import org.geotools.renderer.ScreenMap;
|
|||
import org.opengis.feature.simple.SimpleFeature;
|
||||
import org.opengis.feature.simple.SimpleFeatureType;
|
||||
|
||||
//--- SQL을 얻기 위해 필요한 import ---
|
||||
import org.geotools.jdbc.JDBCDataStore;
|
||||
import org.geotools.jdbc.JDBCFeatureStore;
|
||||
import org.geotools.jdbc.SQLDialect;
|
||||
import java.io.StringWriter;
|
||||
|
||||
class RenderFeatureReader implements FeatureReader<SimpleFeatureType, SimpleFeature> {
|
||||
SimpleFeatureSource source;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.io;
|
||||
package kr.or.geoinfo.webserver.core.render.io;
|
||||
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Point;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.layer;
|
||||
package kr.or.geoinfo.webserver.core.render.layer;
|
||||
|
||||
import com.geotwo.webserver.core.render.style.MapStyle;
|
||||
import kr.or.geoinfo.webserver.core.render.style.MapStyle;
|
||||
import org.geotools.data.FeatureSource;
|
||||
import org.geotools.map.FeatureLayer;
|
||||
import org.geotools.styling.Style;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.geotwo.webserver.core.render.layer;
|
||||
package kr.or.geoinfo.webserver.core.render.layer;
|
||||
|
||||
import com.geotwo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.layer.O2ImgLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.coverage.o2layer.O2LayerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.O2ImgLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import org.geotools.geometry.jts.ReferencedEnvelope;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.geotwo.webserver.core.render.layer;
|
||||
package kr.or.geoinfo.webserver.core.render.layer;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.map.layer.LinkLayer;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.LinkLayer;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
package com.geotwo.webserver.core.render.legend;
|
||||
package kr.or.geoinfo.webserver.core.render.legend;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.map.layer.FeatureLayer;
|
||||
import com.geotwo.webserver.core.map.layer.GroupLayer;
|
||||
import com.geotwo.webserver.core.map.layer.Layer;
|
||||
import com.geotwo.webserver.core.render.StyleMngr;
|
||||
import com.geotwo.webserver.core.util.AVList;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.O2DSMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.FeatureLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.GroupLayer;
|
||||
import kr.or.geoinfo.webserver.core.map.layer.Layer;
|
||||
import kr.or.geoinfo.webserver.core.render.StyleMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.AVList;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.O2DSMngr;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.legend;
|
||||
package kr.or.geoinfo.webserver.core.render.legend;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.awt.Color;
|
||||
import java.util.List;
|
||||
import javax.xml.namespace.QName;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.awt.Color;
|
||||
import java.util.List;
|
||||
import javax.xml.namespace.QName;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import com.geotwo.webserver.core.render.O2StyleFactory;
|
||||
import kr.or.geoinfo.webserver.core.render.O2StyleFactory;
|
||||
import java.util.Map;
|
||||
import javax.xml.namespace.QName;
|
||||
import org.geotools.se.v1_1.SE;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Graphics;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import com.geotwo.webserver.core.render.StyleMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.StyleMngr;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.sld;
|
||||
package kr.or.geoinfo.webserver.core.render.sld;
|
||||
|
||||
import org.geotools.xml.InstanceComponent;
|
||||
import org.geotools.xs.bindings.XSBooleanBinding;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.style;
|
||||
package kr.or.geoinfo.webserver.core.render.style;
|
||||
|
||||
import com.geotwo.webserver.core.map.LayerFactory;
|
||||
import kr.or.geoinfo.webserver.core.map.LayerFactory;
|
||||
import org.geotools.styling.StyleImpl;
|
||||
|
||||
public class MapStyle extends StyleImpl {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style;
|
||||
package kr.or.geoinfo.webserver.core.render.style;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Shape;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.render.StyleMngr;
|
||||
import com.geotwo.webserver.core.render.style.label.util.AWTLabelUtil;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.StyleMngr;
|
||||
import kr.or.geoinfo.webserver.core.render.style.label.util.AWTLabelUtil;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Envelope;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import org.geotools.geometry.jts.LiteShape2;
|
||||
import org.geotools.renderer.label.LabelCacheItem;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Polygon;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import com.vividsolutions.jts.algorithm.MinimumDiameter;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Graphics;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.render.style.label.util;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label.util;
|
||||
|
||||
import com.geotwo.webserver.core.render.style.label.LabelInfo;
|
||||
import kr.or.geoinfo.webserver.core.render.style.label.LabelInfo;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.awt.geom.Line2D;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.render.style.label.util;
|
||||
package kr.or.geoinfo.webserver.core.render.style.label.util;
|
||||
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Polygon;
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package kr.or.geoinfo.webserver.core.service;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public abstract class AbstractService extends HttpServlet {
|
||||
private static final long serialVersionUID = 2014061020172321L;
|
||||
|
||||
public abstract Object parseQuery(HttpServletRequest paramHttpServletRequest) throws Exception;
|
||||
|
||||
public abstract String doProcess(String paramString);
|
||||
|
||||
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
|
||||
super.service(arg0, arg1);
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doGet(req, resp);
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doPost(req, resp);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.service;
|
||||
package kr.or.geoinfo.webserver.core.service;
|
||||
|
||||
import com.geotwo.webserver.core.ServerInfo;
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.ServerInfo;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
package com.geotwo.webserver.core.service;
|
||||
package kr.or.geoinfo.webserver.core.service;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.ServerInfo;
|
||||
import com.geotwo.webserver.core.cache.ImgCacheMngr;
|
||||
import com.geotwo.webserver.core.init.ServerConfiguration;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import com.geotwo.webserver.core.vector.crs.CRSMngr;
|
||||
import com.geotwo.webserver.plugin.ows.util.PluginUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.ServerInfo;
|
||||
import kr.or.geoinfo.webserver.core.cache.ImgCacheMngr;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.vector.crs.CRSMngr;
|
||||
import kr.or.geoinfo.webserver.plugin.ows.util.PluginUtil;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -0,0 +1,182 @@
|
|||
package kr.or.geoinfo.webserver.core.service;
|
||||
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.ServerInfo;
|
||||
import kr.or.geoinfo.webserver.core.init.ServerConfiguration;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.plugin.ows.util.PluginUtil;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.text.DecimalFormat;
|
||||
import javax.servlet.RequestDispatcher;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
public class Service extends AbstractService {
|
||||
private static final long serialVersionUID = 2014061008205121L;
|
||||
|
||||
private static final int SLEEP_TIME = 1000;
|
||||
|
||||
private static final int MAX_SLEEP_TIME = 20000;
|
||||
|
||||
public String parseQuery(HttpServletRequest req) throws Exception {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String doProcess(String str) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
|
||||
req.setCharacterEncoding("UTF-8");
|
||||
String rootPath = ((HttpServletRequest) req).getContextPath();
|
||||
String serviceName = ((HttpServletRequest) req).getRequestURI().replace(rootPath, "");
|
||||
while (serviceName.endsWith("/"))
|
||||
serviceName = serviceName.substring(0, serviceName.length() - 1);
|
||||
long reqId = System.currentTimeMillis();
|
||||
if (((HttpServletRequest) req).getMethod().equalsIgnoreCase("GET")) {
|
||||
LogMngr.getInstance().reqInfo("[REQUEST]",
|
||||
"[" + reqId + "] GET, From " + PluginUtil.getClientIP((HttpServletRequest) req) +
|
||||
" To " + ((serviceName.length() == 0) ? "/" : serviceName) + " , Request : " + ((HttpServletRequest) req).getQueryString());
|
||||
} else {
|
||||
LogMngr.getInstance().reqInfo("[REQUEST]",
|
||||
"[" + reqId + "] POST, From " + PluginUtil.getClientIP((HttpServletRequest) req) +
|
||||
" To " + ((serviceName.length() == 0) ? "/" : serviceName) + " , Request : " + ((HttpServletRequest) req).getQueryString());
|
||||
}
|
||||
if (serviceName.length() == 0) {
|
||||
RequestDispatcher dispatcher = req.getRequestDispatcher("index.html");
|
||||
dispatcher.forward(req, resp);
|
||||
return;
|
||||
}
|
||||
if (isFileService(serviceName)) {
|
||||
File file = new File(getServletContext().getRealPath(serviceName));
|
||||
writeFileResponse(resp, file);
|
||||
return;
|
||||
}
|
||||
HttpServlet service = ServiceMngr.getService(serviceName);
|
||||
if (service != null) {
|
||||
if (service instanceof ServerInfoService) {
|
||||
service.service(req, resp);
|
||||
} else if (ServerInfo.getInstance().isStarted()) {
|
||||
if (ServerInfo.getInstance().isReStarting()) {
|
||||
long sleepTile = System.currentTimeMillis();
|
||||
while (true) {
|
||||
if (System.currentTimeMillis() - sleepTile > 20000L) {
|
||||
writeFailResponse(resp, "O2Map Web is busy to restart. Waiting time for request has been exceeded. [20/sec]");
|
||||
break;
|
||||
}
|
||||
if (!ServerInfo.getInstance().isReStarting()) {
|
||||
service.service(req, resp);
|
||||
break;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000L);
|
||||
} catch (InterruptedException interruptedException) {}
|
||||
}
|
||||
} else {
|
||||
service.service(req, resp);
|
||||
}
|
||||
} else {
|
||||
writeFailResponse(resp, "O2Map Web is not ready. Please check up server configurations and restart server.");
|
||||
}
|
||||
} else {
|
||||
writeFailResponse(resp, "Service [" + serviceName + "] is unregistered Service on O2Map Web.");
|
||||
}
|
||||
LogMngr.getInstance().reqInfo("[RESPONSE]",
|
||||
"[" + reqId + "] is Finish." +
|
||||
|
||||
"Time : " + (new DecimalFormat(".##")).format((System.currentTimeMillis() - reqId) / 1000.0D) + "/sec");
|
||||
}
|
||||
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doGet(req, resp);
|
||||
}
|
||||
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
super.doPost(req, resp);
|
||||
}
|
||||
|
||||
private boolean isFileService(String uri) {
|
||||
try {
|
||||
File file = new File(getServletContext().getRealPath(uri));
|
||||
if (file.exists())
|
||||
return true;
|
||||
} catch (Exception exception) {}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void writeFileResponse(ServletResponse resp, File file) {
|
||||
try {
|
||||
int length = 0;
|
||||
ServletOutputStream outStream = resp.getOutputStream();
|
||||
String mimetype = getServletContext().getMimeType(file.getAbsolutePath());
|
||||
if (mimetype == null)
|
||||
mimetype = "application/octet-stream";
|
||||
resp.setContentType(mimetype);
|
||||
resp.setContentLength((int) file.length());
|
||||
byte[] byteBuffer = new byte[1024];
|
||||
FileInputStream in = new FileInputStream(file);
|
||||
while (in != null && (length = in.read(byteBuffer)) != -1)
|
||||
outStream.write(byteBuffer, 0, length);
|
||||
in.close();
|
||||
outStream.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Request file not found. :: " + e.getMessage());
|
||||
} catch (IOException e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Can't make response output stream. :: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void writeFailResponse(ServletResponse resp, String msg) {
|
||||
try {
|
||||
LogMngr.getInstance().logError("[SERVICE]", msg);
|
||||
Document doc = getFailDocument(msg);
|
||||
Transformer xformer = TransformerFactory.newInstance().newTransformer();
|
||||
if (ServerContext.getDocIndent().intValue() > 0) {
|
||||
xformer.setOutputProperty("indent", "yes");
|
||||
xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", ServerContext.getDocIndent().toString());
|
||||
}
|
||||
resp.setContentType("text/xml; charset=UTF-8");
|
||||
xformer.transform(new DOMSource(doc), new StreamResult((OutputStream) resp.getOutputStream()));
|
||||
} catch (Exception e) {
|
||||
LogMngr.getInstance().logError("[SERVICE]", "Do not create XML : " + Service.class + " / " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static Document getFailDocument(String msg) throws ParserConfigurationException {
|
||||
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
|
||||
Document doc = docBuilder.newDocument();
|
||||
Element rootElement = doc.createElement("SERVER");
|
||||
doc.appendChild(rootElement);
|
||||
Element result = doc.createElement("RESULT");
|
||||
result.appendChild(doc.createTextNode("Fail"));
|
||||
rootElement.appendChild(result);
|
||||
Element errorMessage = doc.createElement("INFO");
|
||||
errorMessage.appendChild(doc.createTextNode(msg));
|
||||
rootElement.appendChild(errorMessage);
|
||||
return doc;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
ServerConfiguration.getInstance().stopServer();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.service;
|
||||
package kr.or.geoinfo.webserver.core.service;
|
||||
|
||||
import com.geotwo.webserver.core.ServerInfo;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.ServerInfo;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
|
@ -59,20 +59,8 @@ public class ServiceMngr {
|
|||
LogMngr.getInstance().logInfo("[SERVICE]", "======================================");
|
||||
LogMngr.getInstance().logDebug("[SERVICE]", "Exist Services clear all");
|
||||
ServiceMngr.clearService();
|
||||
ServiceMngr.createService("/serverinfo", "geoinfo.map.myMap.ServerInfoService");
|
||||
if (ServerInfo.getInstance().isStarted()) {
|
||||
ServiceMngr.createService("/service", "geoinfo.map.myMap.ServicesService");
|
||||
ServiceMngr.createService("/drilling/map/start.do", "com.geotwo.webserver.plugin.ows.service.WMSService");
|
||||
ServiceMngr.createService("/drilling/map/wms.do", "com.geotwo.webserver.plugin.ows.service.WMSService");
|
||||
ServiceMngr.createService("/services/wms", "com.geotwo.webserver.plugin.ows.service.WMSService");
|
||||
ServiceMngr.createService("/services/wfs", "com.geotwo.webserver.plugin.ows.service.WFSService");
|
||||
ServiceMngr.createService("/services/wcs", "com.geotwo.webserver.plugin.ows.service.WCSService");
|
||||
ServiceMngr.createService("/services/wps", "com.geotwo.webserver.plugin.ows.service.WPSService");
|
||||
ServiceMngr.createService("/services/wmts", "com.geotwo.webserver.plugin.ows.service.WMTSService");
|
||||
ServiceMngr.createService("/services/tms", "com.geotwo.webserver.plugin.ows.service.TMSService");
|
||||
ServiceMngr.createService("/services/uwes", "com.geotwo.webserver.plugin.uwes.service.UWESService");
|
||||
ServiceMngr.createService("/services/o2wps", "com.geotwo.webserver.plugin.o2wps.service.O2WPSService");
|
||||
ServiceMngr.createService("/services/icache", "com.geotwo.webserver.plugin.ows.service.ImgCacheService");
|
||||
ServiceMngr.createService("/services/wms", "kr.or.geoinfo.webserver.plugin.ows.service.WMSService");
|
||||
}
|
||||
LogMngr.getInstance().logInfo("[SERVICE]", "");
|
||||
LogMngr.getInstance().logInfo("[SERVER]", "=================================");
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.geotwo.webserver.core.tile.tms;
|
||||
package kr.or.geoinfo.webserver.core.tile.tms;
|
||||
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.File;
|
||||
|
||||
public class TMSInfo {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.geotwo.webserver.core.tile.tms;
|
||||
package kr.or.geoinfo.webserver.core.tile.tms;
|
||||
|
||||
import com.geotwo.webserver.core.ServerContext;
|
||||
import com.geotwo.webserver.core.log.LogMngr;
|
||||
import com.geotwo.webserver.core.util.ServerUtil;
|
||||
import kr.or.geoinfo.webserver.core.ServerContext;
|
||||
import kr.or.geoinfo.webserver.core.log.LogMngr;
|
||||
import kr.or.geoinfo.webserver.core.util.ServerUtil;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geotwo.webserver.core.tile.wmts;
|
||||
package kr.or.geoinfo.webserver.core.tile.wmts;
|
||||
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.geotwo.webserver.core.tile.wmts;
|
||||
package kr.or.geoinfo.webserver.core.tile.wmts;
|
||||
|
||||
import com.geotwo.webserver.core.tile.wmts.TileMatrix;
|
||||
import kr.or.geoinfo.webserver.core.tile.wmts.TileMatrix;
|
||||
import java.io.File;
|
||||
|
||||
public class TileMatrixRule {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue