2020년 4월 17일 금요일

문자열 가공

String test = "홍길동,이순신,고길동";

String transformed = "'" + test.replaceAll(",", "','") + "'";
만약 이름 사이에 공백이 들어갈 수 있다면 아래처럼 하세요.
StringTokenizer st = new StringTokenizer(test, ",");
StringBuilder sb = new StringBuilder("'");

while (st.hasMoreTokens()) {
  sb.append(st.nextToken().trim()).append("','");
}

sb.delete(sb.length()-2, sb.length());
String transformed = sb.toString();

또는
String ss_temp_mail = "";
 int t=0;
 if(!mail_receive.equals("")){
  String[] temp_mail_Arr =mail_receive.split(",");
  for(int p=0; p<temp_mail_Arr.length; p++){

if(p>0){
ss_temp_mail += "'"+temp_mail_Arr[p]+"',";
}
}

번호 뒤자리 잘라버리기

해당 소스는 10자리 기준으로 왔을때....
앞에 4자리 버리고 뒤에 6자리만 사용하고자 할때 만들어 놓은 소스로서...
10자리 아닌 6자리로 오면 그대로 리턴 하게 된다.
참고 할 분 참고하시라고...
    public static String MarketId (String str){
String sTemp = "";
if(str.length() == 10){
str = str.substring(4, 10);
int k =1;
if(!str.substring(0,1).equals("0")){
sTemp = str.substring(0,6);
}else{
for(int i =0; i<str.length(); i++){
if(str.substring(i,k).equals("0")){
sTemp = str.substring(k,6);
}
k++;
}
}
}else {
sTemp = str;
}
return sTemp;
}

java FTP로 파일 존재확인하기

아래 소스는 프레임워크에서 만들었던 소스 입니다.
최종적으로 뒤에 . 으로 찾아 파일이 있으면 200 코드 값으 주는걸로 만들어 보았습니다.
참고용으로 쓸만한지 모르겠군... 

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

static String ip = "127.0.0.1";
static String port = "21";
static String id = "ggmario";
static String password = "ggmario";
FTPClient ftpClient;
FTPClient ftp = new FTPClient();

String tmp = vo.getFile_name(); //에디터에 url 주소 입력 값
String arrTmp[] = null;
arrTmp = tmp.split("\r\n|\n|\r");  //줄바꿈 처리

if(0 < arrTmp.length){
//ftp형태로 파일 존재 여부 체크 시작
boolean isLogin = false;
ftp.setControlEncoding("UTF-8");
ftp.connect(ip, Integer.parseInt(port));
isLogin = ftp.login(id, password);// ftp 로그인

if(!isLogin){
System.out.println("ftp 서버에 로그인하지 못했습니다.");
}else{
System.out.println("ftp 서버에 로그인 하였습니다.");

String sTmp4 = arrTmp[i];

String baseName = FilenameUtils.getBaseName(sTmp4);//파일 명만 가져옴
String extension = FilenameUtils.getExtension(sTmp4);//파일 확장자만 가져옴
String fullPath = FilenameUtils.getFullPath(sTmp4);//URL 디렉토리만 가져옴
String fullPathEnd = FilenameUtils.getFullPathNoEndSeparator(sTmp4);//URL 디렉토리만 가져옴 뒤에 / 제거
System.out.println("prefi1x=="+fullPathEnd);

ftp.cwd("/www.test.or.kr/webapp"+"");

FTPFile[] files = ftp.listFiles(null);

if(ftp.getReplyCode() == 226){  /*550 디렉토리 오류*/
for(int ii=0; ii<files.length; ii++){
String fileName = files[ii].getName();
String sTmp3 = sSplitUrl[1];
//String extension = fileName.substring(fileName.lastIndexOf("."));

String fileName1 = sTmp3.substring( sTmp3.lastIndexOf('/')+1, sTmp3.length() );
//String fileNameWithoutExtn = fileName1.substring(0, fileName1.lastIndexOf('.'));
if(fileName.equals(fileName1)){
vo.setFile_check(200); //성공시 코드 값
}
}
}
}
}

byte를 String 변환

-- > 변수 sMsg 의 바이트 값
String sMsg = “하하하하”;
bytes[] buffers = sMsg.getBytes(); 
-- > 바이트 배열 자체의 문자열 
String buffersArrayString = buffers.toString();
…------
-- > 바이트 배열 자체의 문자열 반환 --
String sMsg = new String(buffers);

json파싱해서 해쉬맵으로

해당 내용은 참고 용으로 만들어 보았습니다 
해쉬맵으로 만들어서 공통으로 만든 부분으로 호출 할라고함
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
@SuppressWarnings("unchecked")
@RequestMapping(value = "/jsonMap", method = RequestMethod.POST)
public ArrayList<HashMap<String, String>> jsonMap (HttpServletRequest request) {
//최종 완성될 JSONObject 선언(전체)
        JSONObject jsonObject = new JSONObject();

        //person의 JSON정보를 담을 Array 선언
        JSONArray personArray = new JSONArray();

        //person의 한명 정보가 들어갈 JSONObject 선언
        JSONObject personInfo = new JSONObject();

        //정보 입력
        personInfo.put("name", "송강호");
        personInfo.put("age", "25");
        personInfo.put("gender", "남자");
        personInfo.put("nickname", "남궁민수");
        //Array에 입력
        personArray.add(personInfo);

        personInfo = new JSONObject();
        personInfo.put("name", "전지현");
        personInfo.put("age", "21");
        personInfo.put("gender", "여자");
        personInfo.put("nickname", "예니콜");
        personArray.add(personInfo);
        
        //전체의 JSONObject에 사람이란 name으로 JSON의 정보로 구성된 Array의 value를 입력
        jsonObject.put("persons", personArray);
        
//        String jsonInfo = jsonObject.toJSONString();
//        StringUtil.jsonParsing(jsonInfo);
StringUtil.jsonParsing(jsonObject.toJSONString());
return StringUtil.jsonParsing(jsonObject.toJSONString());
}

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲


json 형태를 받아서.... 해쉬맵으로 리턴....
@SuppressWarnings("unchecked")
public static ArrayList<HashMap<String, String>> jsonParsing (String string){
HashMap<String, String> map = new HashMap<String,String>();
ArrayList <HashMap<String,String>> mapList = new ArrayList<HashMap<String,String>>();
JSONParser jsonParse  = new JSONParser();
JSONObject jsonObj = null;
JSONArray jsonObj2 = null;
JSONObject jsonObjList  = null;
String sJsonObj = "";

if(false == StringUtil.isEmpty(string)){
try {
    
jsonObj = (JSONObject)jsonParse.parse(string);
for(int i=0; i<jsonObj.size(); i++){
// key set 받아오기 
Set<String> key = jsonObj.keySet(); 
// Iterator 설정
            Iterator<String> iter = key.iterator();
            
            // 각각 키 값 출력
            while(iter.hasNext()){
                String keyname = iter.next();
                sJsonObj = jsonObj.get(keyname).toString();//키 명으로 뽑아서 문자열 담기
            }
            
}
jsonObj2 =  (JSONArray)jsonParse.parse(sJsonObj);
if(jsonObj2.size()>0){
for(int i=0; i<jsonObj2.size(); i++){
jsonObjList = (JSONObject)jsonParse.parse(jsonObj2.get(i).toString());
map = new HashMap<String,String>();
Set<String> key = jsonObjList.keySet(); // key set 받아오기 
            Iterator<String> iter = key.iterator(); // Iterator 설정
            
while(iter.hasNext()){
                String keyname = iter.next();
                jsonObjList.get(keyname).toString();
                
                map.put(keyname, (String) jsonObjList.get(keyname));
}
mapList.add(map);
}
}
//                for(int ii =0; ii<mapList.size(); ii++){//해쉬맵 확인 목적 부분
//                 System.out.println(mapList.get(ii));
//                 System.out.println(mapList.get(ii).get("nickname"));
//                }
} catch (ParseException e) {
e.getMessage();
}
}
return mapList;
}

2020년 4월 16일 목요일

java에서xml 파싱 해서 해쉬맵으로 담기

공통 모듈화 해본 부분
public static ArrayList<HashMap<String, String>> xmlForm (String strXml, String strNode){

HashMap<String, String> map = new HashMap<String,String>();
ArrayList <HashMap<String,String>> mapList = new ArrayList<HashMap<String,String>>();

String result = strXml;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder;
        Document doc = null;
        try {
            // xml 파싱하기
            InputSource is = new InputSource(new StringReader(result));
            builder = factory.newDocumentBuilder();
            doc = builder.parse(is);
            XPathFactory xpathFactory = XPathFactory.newInstance();
            XPath xpath = xpathFactory.newXPath();
            XPathExpression expr = xpath.compile(strNode);
            NodeList nodeList = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
            for (int i = 0; i < nodeList.getLength(); i++) {
                NodeList child = nodeList.item(i).getChildNodes();
                map = new HashMap<String,String>();
                for (int j = 0; j < child.getLength(); j++) {
                    Node node = child.item(j);
                    logger.debug("현재 노드 이름 : "+node.getNodeName());
                    logger.debug("현재 노드 타입 : "+node.getNodeType());
                    logger.debug("현재 노드 값 : "+node.getTextContent());
                    logger.debug("현재 노드 네임스페이스 : "+node.getPrefix());
                    logger.debug("현재 노드의 다음 노드 : "+node.getNextSibling());
                    map.put(node.getNodeName().toString(), node.getTextContent().toString());
                }
                mapList.add(map);
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
return mapList;
}


호출 하는 부분
@RequestMapping(value = "/xmlForm", method = RequestMethod.POST)
public ArrayList<HashMap<String, String>> xmlForm (HttpServletRequest request) {
ArrayList <HashMap<String,String>> mapList = new ArrayList<HashMap<String,String>>();
            // xml 파싱하기 요청하기
        String result = "<S:Envelope xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'>"+
"<S:Body>"+
"<ns2:executeResponse xmlns:ns2='http://pmsfc4002.pmsfc40.pms.lincoln.seanuts.co.jp/'>"+
"<return>"+
"<commonResponse>"+
"<isSuccess>true </isSuccess>"+
"</commonResponse>"+
"<adjustmentResult>"+
"<planGroupCode>0 </planGroupCode>"+
"<planGroupName>Webシングル</planGroupName>"+
"<adjustmentDate>20100201 </adjustmentDate>"+
"<priceRange1>14500 </priceRange1>"+
"<salesStatus>1 </salesStatus>"+
"<requestId>030 </requestId>"+
"<planList>"+
"<agtCode>170 </agtCode>"+
"<netAgtRmTypeCode>S01 </netAgtRmTypeCode>"+
"<planCode>S01*1 </planCode>"+
"<offereeCode>- </offereeCode>"+
"<planName>ビジネスシングルプラン(禁煙) </planName>"+
"<priceRange1>14500 </priceRange1>"+
"<netAgtRmTypeName>シングル(禁煙) </netAgtRmTypeName>"+
"<isPriceAdjustable>true </isPriceAdjustable>"+
"<salesStatus>1 </salesStatus>"+
"</planList>"+
"<planList>"+
"<agtCode>164 </agtCode>"+
"<netAgtRmTypeCode>00361 </netAgtRmTypeCode>"+
"<planCode>75710 </planCode>"+
"<offereeCode>- </offereeCode>"+
"<planName>シングルプラン</planName>"+
"<priceRange1>14500 </priceRange1>"+
"<netAgtRmTypeName>シングルルームA </netAgtRmTypeName>"+
"<isPriceAdjustable>true </isPriceAdjustable>"+
"<salesStatus>1 </salesStatus>"+
"</planList>"+
"<planList>"+
"<agtCode>166 </agtCode>"+
"<netAgtRmTypeCode>0027689 </netAgtRmTypeCode>"+
"<planCode>00078191 </planCode>"+
"<offereeCode>- </offereeCode>"+
"<planName>【ビジネスシングル】シンプルステイ(素泊まり) </planName>"+
"<priceRange1>14500 </priceRange1>"+
"<netAgtRmTypeName>シングル ルーム</netAgtRmTypeName>"+
"<isPriceAdjustable>true </isPriceAdjustable>"+
"<salesStatus>1 </salesStatus>"+
"</planList>"+
"</adjustmentResult>"+
"</return>"+
"</ns2:executeResponse>"+
"</S:Body>"+
"</S:Envelope>";
       
        System.out.println("-------------------------------------");
        System.out.println(StringUtil.xmlForm(result,"//planList"));
        System.out.println("-------------------------------------");
        mapList = StringUtil.xmlForm(result,"//planList");

return mapList;

java 랜덤Key 값 생성

기본 10자리로 만들어 보았음
public static String randomKey(int length) {
StringBuffer result = new StringBuffer();
Random rnd = new Random();

int size = 10;
if(length > 0) {
size = length;
}

for (int i = 0; i < size; i++) {
    int rIndex = rnd.nextInt(3);
    switch (rIndex) {
    case 0:
        // a-z
    result.append((char) ((int) (rnd.nextInt(26)) + 97));
        break;
    case 1:
        // A-Z
    result.append((char) ((int) (rnd.nextInt(26)) + 65));
        break;
    case 2:
        // 0-9
    result.append((rnd.nextInt(10)));
        break;
    }
}
return result.toString();
}