예전에 네이버 블로그에서 작성한 것인데...  필요해 보이는 것만 하나둘 옮겨봅니다.

 

public class CutStringTest {
    /**
     * 지정한 정수의 개수 만큼 빈칸(" ")을 스트링을 구한다.
     * 
     * @param int 문자 개수
     * @return String 지정된 개수 만큼의 빈칸들로 연결된 String
     */
    public static String spaces(int count) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < count; i++) {
        	sb.append(' ');
        }
        return sb.toString();
    }

    /**
     * 지정한 정수의 개수 만큼 빈칸(" ")을 스트링을 구한다. 절단된 String의 바이트 수가 자를 바이트 개수보다 모자라지 않도록
     * 한다.
     * 
     * @param str
     *            원본 String
     * @param int 자를 바이트 개수
     * @return String 절단된 String
     */
    public static String cutStringByBytes(String str, int length) {
        byte[] bytes = str.getBytes();
        int len = bytes.length;
        int counter = 0;
        if (length >= len) {
        	return str + spaces(length - len);
        }
        for (int i = length - 1; i >= 0; i--) {
            if (((int) bytes[i] & 0x80) != 0)
            	counter++;
        }
        return new String(bytes, 0, length + (counter % 2));
    }

    /**
     * 지정한 정수의 개수 만큼 빈칸(" ")을 스트링을 구한다. 절단된 String의 바이트 수가 자를 바이트 개수를 넘지 않도록 한다.
     * 
     * @param str
     *            원본 String
     * @param int 자를 바이트 개수
     * @return String 절단된 String
     */
    public static String cutInStringByBytes(String str, int length) {

        byte[] bytes = str.getBytes();
        int len = bytes.length;
        int counter = 0;
        if (length >= len) {
        	return str + spaces(length - len);
        }
        for (int i = length - 1; i >= 0; i--) {
            if (((int) bytes[i] & 0x80) != 0)
            	counter++;
        }
        return new String(bytes, 0, length - (counter % 2));
    }

    /**
     * Main
     * @param args
     */
    public static void main(String[] args) {
        String str = "글자 자르기";
        for (int i = 4; i < 24; i++)
        	System.out.println(i + ": [" + cutInStringByBytes(str, i) + "]");
    }
}

 

'Java' 카테고리의 다른 글

Parse an XML File using the SAX Parser  (0) 2015.07.15
Maria DB Connection By Java  (0) 2015.07.06

갑자기 필요해져 급하게 작성해본 xml parser.

간단하게 설정된 값들을 읽어오는 기능만 존재하면 되서 SAX Parser를 이용한 XML Parser를 작성해 봤습니다.


다음은 XML 구조 입니다..



    
        org.mariadb.jdbc.Driver
        test
        test123
        jdbc:mariadb://localhost:3306/devDB
    
    
        
        test
        test123
        
    

parsing 하는 java code 는 아래와 같습니다.

package whitesquall.util;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class XMLParser extends DefaultHandler {
	
	List<map<string, string> databases = new ArrayList<>();
	Map<string, string> database = null;
	
	String dbName = "";
	String content = "";
	
	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		
		switch (qName) {
			case "database":
				database = new HashMap();
				dbName = attributes.getValue("id");
				break;
		}
	}

	@Override
	public void endElement(String uri, String localName, String qName) throws SAXException {
		switch (qName) {
			case "database": 
				databases.add(database);
				break;
			
			case "driverName": 
				database.put("driverName", content);
				break;
				
			case "user": 
				database.put("user", content);
				break;
				
			case "password": 
				database.put("password", content);
				break;
				
			case "connectionUrl": 
				database.put("connectionUrl", content);
				break;
		}
	}

	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		content = String.copyValueOf(ch, start, length).trim();
	}

	
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {

		SAXParserFactory parserFactor = SAXParserFactory.newInstance();
		SAXParser parser = parserFactor.newSAXParser();
		XMLParser handler = new XMLParser();
		
		parser.parse(new File("xml/DatabaseInfo.xml"), handler);
		
		// 결과 출력.
		for (Map database : handler.databases) {
			for (Iterator iterator = database.keySet().iterator(); iterator.hasNext();) {
				String mapKey = (String)iterator.next();
				System.out.println(mapKey + ":" + database.get(mapKey));
				
			}
		}
	}
}



startElement(...) : 시작 태그를 만났을때 호출되는 method

endElement(..) : 태그의 끝을 만났을 때의 이벤트 때 호출되는 method

characters(...) : 태그 사이의 내용을 만났을때의 이벤트 때 호출되는 method


위의 세 메소드를 구현하여 xml의 내용을 가져오면 됩니다.

'Java' 카테고리의 다른 글

글자수 단위로 자르기  (0) 2022.12.05
Maria DB Connection By Java  (0) 2015.07.06

우선은 Maria DB와의 연동에 필요한 connector/client를 구해서 classpath에 등록해 둡니다.

아래의 링크에서 구할 수 있습니다.

https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/


아래서 연결 테스트를 위해 작성한 코드 입니다.

필요한 부분 변경하셔서 사용하면 됩니다.

package whitesquall.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MariaDBConnectionTest {

	static final String JDBC_DRIVER = "org.mariadb.jdbc.Driver";  
	static final String DB_URL = "jdbc:mariadb://[서버주소]:3306/[DB명]";


	static final String USERNAME = "[사용자명]";
	static final String PASSWORD = "[비밀번호]";

	public static void main(String[] args) {
		
		Connection conn = null;
		Statement stmt = null;
		try {
			Class.forName(JDBC_DRIVER);
			conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

			System.out.println("\n- MariaDB Connection");

			stmt = conn.createStatement();

			String sql;
			sql = "SELECT id, name FROM user";
			ResultSet rs = stmt.executeQuery(sql);

			while (rs.next()) {
				String userId = rs.getString("id");
				String userName = rs.getString("name");

				System.out.print("\n** id : " + userId);
				System.out.print("\n    -> name : " + userName);
			}
			
			rs.close();
			stmt.close();
			conn.close();
			
		} catch (SQLException se1) {
			se1.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				if (stmt != null)
					stmt.close();
			} catch (SQLException se2) {
			}
			try {
				if (conn != null)
					conn.close();
			} catch (SQLException se) {
				se.printStackTrace();
			}
		}
		System.out.println("\n\n- MariaDB Connection Close");
	}
}

'Java' 카테고리의 다른 글

글자수 단위로 자르기  (0) 2022.12.05
Parse an XML File using the SAX Parser  (0) 2015.07.15

+ Recent posts