Compare commits
12 Commits
feature/re
...
master
Author | SHA1 | Date |
---|---|---|
lkd9125 | 13cbd0d087 | 11 months ago |
lkd9125 | 32f9a1ef50 | 11 months ago |
lkd9125 | a96aeed70c | 11 months ago |
lkd9125 | 88d6e1236e | 11 months ago |
lkd9125 | bb8b421f37 | 11 months ago |
lkd9125 | b383414b24 | 11 months ago |
leehagjoon(이학준) | 5e4a6d1f1a | 11 months ago |
qkr7828(박재우) | aff921f870 | 12 months ago |
qkr7828(박재우) | ba8a3f9945 | 12 months ago |
qkr7828(박재우) | d52548e6d1 | 1 year ago |
qkr7828(박재우) | 44595fae31 | 1 year ago |
qkr7828(박재우) | 8b73dee6b6 | 1 year ago |
12 changed files with 396 additions and 28 deletions
@ -0,0 +1,15 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.locationtech.jts.geom.Coordinate; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class BasFlightCoordModel { |
||||
|
||||
private List<Coordinate> coordinates; |
||||
|
||||
private Double buffer; |
||||
} |
@ -0,0 +1,58 @@
|
||||
package com.palnet.biz.api.comn.controller; |
||||
|
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.io.OutputStream; |
||||
import java.net.URLEncoder; |
||||
import java.nio.charset.StandardCharsets; |
||||
|
||||
import javax.servlet.http.HttpServletResponse; |
||||
|
||||
import org.springframework.http.MediaType; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
|
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
@RestController |
||||
@Slf4j |
||||
@RequestMapping("/api/comn") |
||||
@RequiredArgsConstructor |
||||
public class ComnController { |
||||
|
||||
private final HttpServletResponse response; |
||||
|
||||
private final String BASE_URL = "/data/pdf/3-1.paldesign.pdf"; |
||||
|
||||
@GetMapping("/pdf-download") |
||||
public void pdfDownload(){ |
||||
log.error("ComnController - pdfDownload()"); |
||||
|
||||
try (InputStream inputStream = new FileInputStream(new File(BASE_URL)); |
||||
OutputStream outputStream = response.getOutputStream()) { |
||||
|
||||
String fileOriName = "3-1.paldesign.pdf"; |
||||
fileOriName = URLEncoder.encode(fileOriName, StandardCharsets.UTF_8); |
||||
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); |
||||
response.setCharacterEncoding(StandardCharsets.UTF_8.name()); |
||||
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileOriName + "\""); |
||||
|
||||
byte[] buffer = new byte[1024]; |
||||
int length; |
||||
|
||||
while ((length = inputStream.read(buffer)) != -1) { |
||||
outputStream.write(buffer, 0, length); |
||||
} |
||||
|
||||
} catch (IOException e) { |
||||
|
||||
log.error("error -> {}", e.getMessage()); |
||||
} |
||||
} |
||||
} |
@ -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,142 @@
|
||||
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.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; |
||||
|
||||
import lombok.extern.log4j.Log4j2; |
||||
|
||||
@Component |
||||
@Log4j2 |
||||
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); // 파일 업로드
|
||||
|
||||
log.info("파일 업로드 완료"); |
||||
|
||||
} 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