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