qkr7828(박재우)
1 year ago
7 changed files with 282 additions and 10 deletions
@ -0,0 +1,71 @@
|
||||
package com.palnet.comn.utils; |
||||
|
||||
import java.io.IOException; |
||||
import java.io.StringWriter; |
||||
import java.util.List; |
||||
|
||||
import javax.xml.bind.JAXBContext; |
||||
import javax.xml.bind.JAXBException; |
||||
import javax.xml.bind.Marshaller; |
||||
|
||||
import org.springframework.context.annotation.Profile; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import de.micromata.opengis.kml.v_2_2_0.Document; |
||||
import de.micromata.opengis.kml.v_2_2_0.Kml; |
||||
import de.micromata.opengis.kml.v_2_2_0.Placemark; |
||||
import de.micromata.opengis.kml.v_2_2_0.Point; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
@Component |
||||
@Slf4j |
||||
public class KmlUtils { |
||||
|
||||
public String generateKMLFromSimpleKml(List<String> coordinates) throws IOException, JAXBException { |
||||
Kml kml = new Kml(); |
||||
Document document = kml.createAndSetDocument(); |
||||
|
||||
for (String coordinate : coordinates) { |
||||
Placemark placemark = document.createAndAddPlacemark(); |
||||
placemark.setName("Simple placemark"); |
||||
placemark.setDescription("Attached to the ground. Intelligently places itself at the height of the underlying terrain."); |
||||
|
||||
Point point = placemark.createAndSetPoint(); |
||||
point.addToCoordinates(coordinate); |
||||
} |
||||
|
||||
StringWriter writer = new StringWriter(); |
||||
JAXBContext context = JAXBContext.newInstance(Kml.class); |
||||
Marshaller marshaller = context.createMarshaller(); |
||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); |
||||
marshaller.marshal(kml, writer); |
||||
|
||||
String kmlString = writer.toString(); |
||||
|
||||
return kmlString; |
||||
|
||||
} |
||||
|
||||
// public String generateKMLFromCoordinates(List<String> coordinatesList) {
|
||||
// StringBuilder kmlBuilder = new StringBuilder();
|
||||
// kmlBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||
// kmlBuilder.append("<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n");
|
||||
// kmlBuilder.append("<Document>\n");
|
||||
// for (String coordinates : coordinatesList) {
|
||||
// kmlBuilder.append("<Placemark>\n");
|
||||
// kmlBuilder.append("<name>Simple placemark</name>\n");
|
||||
// kmlBuilder.append("<description>Attached to the ground. Intelligently places itself at the height of the underlying terrain.</description>\n");
|
||||
// kmlBuilder.append("<Point>\n");
|
||||
// kmlBuilder.append("<coordinates>").append(coordinates).append("</coordinates>\n");
|
||||
// kmlBuilder.append("</Point>\n");
|
||||
// kmlBuilder.append("</Placemark>\n");
|
||||
// }
|
||||
// kmlBuilder.append("</Document>\n");
|
||||
// kmlBuilder.append("</kml>");
|
||||
//
|
||||
// log.info("kml>>>>>>>>>>>{}", kmlBuilder);
|
||||
//
|
||||
// return kmlBuilder.toString();
|
||||
// }
|
||||
|
||||
} |
@ -0,0 +1,138 @@
|
||||
package com.palnet.comn.utils; |
||||
|
||||
import java.io.ByteArrayInputStream; |
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.IOException; |
||||
import java.io.UnsupportedEncodingException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.Vector; |
||||
|
||||
import org.springframework.beans.factory.annotation.Value; |
||||
import org.springframework.context.annotation.Profile; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import com.jcraft.jsch.Channel; |
||||
import com.jcraft.jsch.ChannelSftp; |
||||
import com.jcraft.jsch.JSch; |
||||
import com.jcraft.jsch.JSchException; |
||||
import com.jcraft.jsch.Session; |
||||
import com.jcraft.jsch.SftpATTRS; |
||||
import com.jcraft.jsch.SftpException; |
||||
|
||||
@Component |
||||
public class SftpUtils { |
||||
|
||||
private Session session = null; |
||||
private Channel channel = null; |
||||
private ChannelSftp channelSftp = null; |
||||
@Value("${spring.sftp.host}") |
||||
private String host; |
||||
@Value("${spring.sftp.userName}") |
||||
private String userName; |
||||
@Value("${spring.sftp.password}") |
||||
private String password; |
||||
@Value("${spring.sftp.port}") |
||||
private int port; |
||||
@Value("${spring.sftp.uploadPath}") |
||||
private String uploadPath; |
||||
|
||||
private final Date today = new Date(); |
||||
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
||||
|
||||
public void init(String kmlContent, String fileName) { |
||||
|
||||
JSch jSch = new JSch(); |
||||
|
||||
try { |
||||
session = jSch.getSession(userName, host, port); |
||||
session.setPassword(password); |
||||
|
||||
java.util.Properties config = new java.util.Properties(); |
||||
config.put("StrictHostKeyChecking", "no"); |
||||
session.setConfig(config); |
||||
|
||||
session.connect(); |
||||
|
||||
channelSftp = (ChannelSftp) session.openChannel("sftp"); |
||||
channelSftp.connect(); |
||||
|
||||
// kmlContent를 ByteArrayInputStream으로 변환
|
||||
ByteArrayInputStream inputStream = new ByteArrayInputStream(kmlContent.getBytes("UTF-8")); |
||||
|
||||
// 파일 업로드
|
||||
channelSftp.cd(uploadPath); // 원격 디렉토리로 이동
|
||||
channelSftp.put(inputStream, fileName); // 파일 업로드
|
||||
|
||||
} catch (JSchException | SftpException | UnsupportedEncodingException e) { |
||||
e.printStackTrace(); |
||||
} finally { |
||||
if (channelSftp != null && channelSftp.isConnected()) { |
||||
channelSftp.disconnect(); |
||||
} |
||||
if (session != null && session.isConnected()) { |
||||
session.disconnect(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public boolean exists(String path) { |
||||
|
||||
Vector res = null; |
||||
try { |
||||
res = channelSftp.ls(path); |
||||
} catch (SftpException e) { |
||||
if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
return res != null && !res.isEmpty(); |
||||
} |
||||
|
||||
public boolean upload(String dir, File file) { |
||||
|
||||
boolean isUpload = false; |
||||
SftpATTRS attrs; |
||||
FileInputStream in = null; |
||||
try { |
||||
in = new FileInputStream(file); |
||||
channelSftp.cd(dir); |
||||
channelSftp.put(in, file.getName()); |
||||
|
||||
// 업로드했는지 확인
|
||||
if (this.exists(dir +"/"+file.getName())) { |
||||
isUpload = true; |
||||
} |
||||
} catch (SftpException e) { |
||||
e.printStackTrace(); |
||||
} catch (FileNotFoundException e) { |
||||
e.printStackTrace(); |
||||
} finally { |
||||
try { |
||||
in.close(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
return isUpload; |
||||
} |
||||
|
||||
// public void sftp(String kml) {
|
||||
//
|
||||
// this.init(host, userName, password, port);
|
||||
//
|
||||
// // 업로드 테스트
|
||||
// File uploadfile = new File(uploadPath + "파일명"); // 파일 객체 생성
|
||||
//
|
||||
// String mkdirPath = sdf.format(today); //현재날짜 년월일
|
||||
// boolean isUpload = this.upload(uploadPath+mkdirPath, uploadfile); //업로드
|
||||
// System.out.println("isUpload -" + isUpload); // 업로드 여부 확인
|
||||
//
|
||||
// // 업로드 다운로드 수행 후 꼭 연결을 끊어줘야 한다!!
|
||||
// channelSftp.quit();
|
||||
// session.disconnect();
|
||||
// }
|
||||
} |
Loading…
Reference in new issue