///*
// * Created on 12-11-20
// *
// * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
// * in compliance with the License. You may obtain a copy of the License at
// *
// * http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software distributed under the License
// * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// * or implied. See the License for the specific language governing permissions and limitations under
// * the License.
// *
// * Copyright @2012 the original author or authors.
// */
//package ch02utils;
//
//import com.sun.image.codec.jpeg.JPEGCodec;
//import com.sun.image.codec.jpeg.JPEGEncodeParam;
//import com.sun.image.codec.jpeg.JPEGImageEncoder;
//import org.apache.commons.lang.ArrayUtils;
//import org.w3c.dom.Document;
//import org.w3c.dom.Element;
//import org.w3c.dom.Node;
//import org.w3c.dom.NodeList;
//
//import javax.imageio.ImageIO;
//import javax.xml.parsers.DocumentBuilder;
//import javax.xml.parsers.DocumentBuilderFactory;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//import java.io.*;
//import java.net.URL;
//import java.nio.channels.FileChannel;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.Map;
//import java.util.zip.CRC32;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//
///**
// * 20个有用的代码片段
// *
// * @author XiongNeng
// * @version 1.0
// * @since 12-11-20
// */
//public class SpringUtil {
// /**
// * 字符串有整型的相互转换
// */
// public void stringAndInt() {
// String a = String.valueOf(2); //integer to numeric string
// int i = Integer.parseInt(a); //numeric string to an int
// }
//
// /**
// * 向文件末尾添加内容
// *
// * @throws Exception
// */
// public void appendToFile() throws Exception {
// BufferedWriter out = null;
// try {
// out = new BufferedWriter(new FileWriter("filename", true));
// out.write("aString");
// } finally {
// if (out != null) {
// out.close();
// }
// }
// }
//
// /**
// * 得到当前方法的名字
// *
// * @return 当前方法的名字
// */
// public String getCurrentMethodName() {
// return Thread.currentThread().getStackTrace()[1].getMethodName();
// }
//
// /**
// * 转字符串到日期
// *
// * @param dateStr 字符串
// * @return 日期
// * @throws ParseException
// */
// public Date stringToDate(String dateStr) throws ParseException {
// return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);
// }
//
// /**
// * 把 Java util.Date 与 sql.Date 相互转化
// */
// public void sqlAndUtilDate() {
// java.util.Date utilDate = new java.util.Date();
// java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
// System.out.println(sqlDate);
// }
//
// /**
// * 使用NIO进行快速的文件拷贝
// */
// public void nioFileCopy(File in, File out) throws IOException {
// FileChannel inChannel = new FileInputStream(in).getChannel();
// FileChannel outChannel = new FileOutputStream(out).getChannel();
// try {
// // original -- apparently has trouble copying large files on Windows
// // inChannel.transferTo(0, inChannel.size(), outChannel);
// // magic number for Windows, 64Mb - 32Kb)
// int maxCount = (64 * 1024 * 1024) - (32 * 1024);
// long size = inChannel.size();
// long position = 0;
// while (position < size) {
// position += inChannel.transferTo(position, maxCount, outChannel);
// }
// } finally {
// if (inChannel != null) {
// inChannel.close();
// }
// if (outChannel != null) {
// outChannel.close();
// }
// }
// }
//
// /**
// * 创建图片文件的缩略图
// *
// * @param filename 图片文件名
// * @param thumbWidth 缩略图宽度
// * @param thumbHeight 缩略图高度
// * @param quality 质量
// * @param outFilename 输出文件名
// * @throws InterruptedException
// * @throws FileNotFoundException
// * @throws IOException
// */
// public void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename)
// throws InterruptedException, FileNotFoundException, IOException {
// // load image from filename
// Image image = Toolkit.getDefaultToolkit().getImage(filename);
// MediaTracker mediaTracker = new MediaTracker(new Container());
// mediaTracker.addImage(image, 0);
// mediaTracker.waitForID(0);
// // use this to test for errors at this point: System.out.println(mediaTracker.isErrorAny());
//
// // determine thumbnail size from WIDTH and HEIGHT
// double thumbRatio = (double) thumbWidth / (double) thumbHeight;
// int imageWidth = image.getWidth(null);
// int imageHeight = image.getHeight(null);
// double imageRatio = (double) imageWidth / (double) imageHeight;
// if (thumbRatio < imageRatio) {
// thumbHeight = (int) (thumbWidth / imageRatio);
// } else {
// thumbWidth = (int) (thumbHeight * imageRatio);
// }
//
// // draw original image to thumbnail image object and
// // scale it to the new size on-the-fly
// BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
// Graphics2D graphics2D = thumbImage.createGraphics();
// graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
// graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
//
// // save thumbnail image to outFilename
// BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
// JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
// quality = Math.max(0, Math.min(quality, 100));
// param.setQuality((float) quality / 100.0f, false);
// encoder.setJPEGEncodeParam(param);
// encoder.encode(thumbImage);
// out.close();
// }
//
//// /**
//// * 利用iText库创建PDF文件
//// */
//// public void generatePdf() {
//// try {
//// OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
//// Document document = new Document();
//// PdfWriter.getInstance(document, file);
//// document.open();
//// document.add(new Paragraph("Hello Kiran"));
//// document.add(new Paragraph(new Date().toString()));
//// document.close();
//// file.close();
//// } catch (Exception e) {
//// e.printStackTrace();
//// }
//// }
//
// /**
// * HTTP 代理设置
// */
// public void httpProxy() {
// System.getProperties().put("http.proxyHost", "someProxyURL");
// System.getProperties().put("http.proxyPort", "someProxyPort");
// System.getProperties().put("http.proxyUser", "someUserName");
// System.getProperties().put("http.proxyPassword", "somePassword");
// }
//
// /**
// * 抓取屏幕
// *
// * @param fileName 输出的屏幕截图文件名
// * @throws Exception
// */
// public void captureScreen(String fileName) throws Exception {
// Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// Rectangle screenRectangle = new Rectangle(screenSize);
// Robot robot = new Robot();
// BufferedImage image = robot.createScreenCapture(screenRectangle);
// ImageIO.write(image, "png", new File(fileName));
// }
//
// /**
// * 列出文件和目录
// */
// public void listDirAndFiles() {
// File dir = new File("directoryName");
// String[] children = dir.list();
// if (children == null) {
// // Either dir does not exist or is not a directory
// } else {
// for (String filename : children) {
// // Get filename of file or directory
// }
// }
//
// // It is also possible to filter the list of returned files.
// // This example does not return any files that start with `.'.
// FilenameFilter filter = new FilenameFilter() {
// public boolean accept(File dir, String name) {
// return !name.startsWith(".");
// }
// };
// children = dir.list(filter);
//
// // The list of files can also be retrieved as File objects
// File[] files = dir.listFiles();
//
// // This filter only returns directories
// FileFilter fileFilter = new FileFilter() {
// public boolean accept(File file) {
// return file.isDirectory();
// }
// };
// files = dir.listFiles(fileFilter);
// }
//
// public void createZipOrJarFile() throws IOException {
// String[] args = new String[]{"", "", ""};
// if (args.length < 2) {
// System.err.println("usage: java ZipIt Zip.zip file1 file2 file3");
// System.exit(-1);
// }
// File zipFile = new File(args[0]);
// if (zipFile.exists()) {
// System.err.println("Zip file already exists, please try another");
// System.exit(-2);
// }
// FileOutputStream fos = new FileOutputStream(zipFile);
// ZipOutputStream zos = new ZipOutputStream(fos);
// int bytesRead;
// byte[] buffer = new byte[1024];
// CRC32 crc = new CRC32();
// for (int i = 1, n = args.length; i < n; i++) {
// String name = args[i];
// File file = new File(name);
// if (!file.exists()) {
// System.err.println("Skipping: " + name);
// continue;
// }
// BufferedInputStream bis = new BufferedInputStream(
// new FileInputStream(file));
// crc.reset();
// while ((bytesRead = bis.read(buffer)) != -1) {
// crc.update(buffer, 0, bytesRead);
// }
// bis.close();
// // Reset to beginning of input stream
// bis = new BufferedInputStream(
// new FileInputStream(file));
// ZipEntry entry = new ZipEntry(name);
// entry.setMethod(ZipEntry.STORED);
// entry.setCompressedSize(file.length());
// entry.setSize(file.length());
// entry.setCrc(crc.getValue());
// zos.putNextEntry(entry);
// while ((bytesRead = bis.read(buffer)) != -1) {
// zos.write(buffer, 0, bytesRead);
// }
// bis.close();
// }
// zos.close();
// }
//
// /**
// * 解析/读取XML 文件
// *
// * @param fileName xml文件名
// */
// public void parseXmlFile(String fileName) {
// try {
// DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// DocumentBuilder db = dbf.newDocumentBuilder();
// File file = new File(fileName);
// if (file.exists()) {
// Document doc = db.parse(file);
// Element docEle = doc.getDocumentElement();
//
// // Print root element of the document
// System.out.println("Root element of the document: " + docEle.getNodeName());
// NodeList studentList = docEle.getElementsByTagName("student");
//
// // Print total student elements in document
// System.out.println("Total students: " + studentList.getLength());
//
// if (studentList != null && studentList.getLength() > 0) {
// for (int i = 0; i < studentList.getLength(); i++) {
//
// Node node = studentList.item(i);
// if (node.getNodeType() == Node.ELEMENT_NODE) {
// System.out.println("=====================");
// Element e = (Element) node;
// NodeList nodeList = e.getElementsByTagName("name");
// System.out.println("Name: "
// + nodeList.item(0).getChildNodes().item(0)
// .getNodeValue());
// nodeList = e.getElementsByTagName("grade");
// System.out.println("Grade: "
// + nodeList.item(0).getChildNodes().item(0)
// .getNodeValue());
// nodeList = e.getElementsByTagName("age");
// System.out.println("Age: "
// + nodeList.item(0).getChildNodes().item(0)
// .getNodeValue());
// }
// }
// } else {
// System.exit(1);
// }
// }
// } catch (Exception e) {
// System.out.println(e);
// }
// }
//
// /**
// * 把 Array 转换成 Map
// */
// public void arrayToMap() {
// String[][] countries = {{"United States", "New York"}, {"United Kingdom", "London"},
// {"Netherland", "Amsterdam"}, {"Japan", "Tokyo"}, {"France", "Paris"}};
// Map countryCapitals = ArrayUtils.toMap(countries);
// System.out.println("Capital of Japan is " + countryCapitals.get("Japan"));
// System.out.println("Capital of France is " + countryCapitals.get("France"));
// }
//
// /**
// * 发送邮件
// * import javax.mail.*;
// * import javax.mail.internet.*;
// */
//// public void postMail(String recipients[], String subject, String message, String from) throws MessagingException {
//// boolean debug = false;
////
//// //Set the host smtp address
//// Properties props = new Properties();
//// props.put("mail.smtp.host", "smtp.example.com");
////
//// // create some properties and get the default Session
//// Session session = Session.getDefaultInstance(props, null);
//// session.setDebug(debug);
////
//// // create a message
//// Message msg = new MimeMessage(session);
////
//// // set the from and to address
//// InternetAddress addressFrom = new InternetAddress(from);
//// msg.setFrom(addressFrom);
////
//// InternetAddress[] addressTo = new InternetAddress[recipients.length];
//// for (int i = 0; i < recipients.length; i++) {
//// addressTo[i] = new InternetAddress(recipients[i]);
//// }
//// msg.setRecipients(Message.RecipientType.TO, addressTo);
////
//// // Optional : You can also set your custom headers in the Email if you Want
//// msg.addHeader("MyHeaderName", "myHeaderValue");
////
//// // Setting the Subject and Content Type
//// msg.setSubject(subject);
//// msg.setContent(message, "text/plain");
//// Transport.send(msg);
//// }
//
// /**
// * 发送HTTP 请求
// */
// public void sendHttpRequest() {
// try {
// URL my_url = new URL("http://coolshell.cn/");
// BufferedReader br = new BufferedReader(new InputStreamReader(my_url.openStream()));
// String strTemp = "";
// while (null != (strTemp = br.readLine())) {
// System.out.println(strTemp);
// }
// } catch (Exception ex) {
// ex.printStackTrace();
// }
// }
//
// /**
// * 改变数组的大小
// *
// * @param oldArray 旧的数组
// * @param newSize 新的数组大小
// * @return 新的数组
// */
// public static Object resizeArray(Object oldArray, int newSize) {
// int oldSize = java.lang.reflect.Array.getLength(oldArray);
// Class elementType = oldArray.getClass().getComponentType();
// Object newArray = java.lang.reflect.Array.newInstance(
// elementType, newSize);
// int preserveLength = Math.min(oldSize, newSize);
// if (preserveLength > 0)
// System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
// return newArray;
// }
//
//}