feat: 발주기관 소속 프로젝트만 보이도록 기능 추가

main
thkim 2025-11-10 16:42:58 +09:00
parent c8399d6ee8
commit a5f294bee6
215 changed files with 2482 additions and 16558 deletions

14
pom.xml
View File

@ -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>

View File

@ -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);
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}
}

View File

@ -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();
}
}
}
}

View File

@ -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 {}

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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() );
}
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -1,4 +1,4 @@
package com.geotwo.webserver.core;
package kr.or.geoinfo.webserver.core;
public class ServerInfo
{

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View 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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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]", "=================================");

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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