/** * * NORD POS is a fork of Openbravo POS. * * Copyright (C) 2009-2013 Nord Trading Ltd. <http://www.nordpos.com> * * This file is part of NORD POS. * * NORD POS is free software: you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * NORD POS is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * NORD POS. If not, see <http://www.gnu.org/licenses/>. */ package com.nordpos.device.util; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; /** * * @author Andrey Svininykh <svininykh@gmail.com> * @version NORD POS 3.0 */ public class StringUtils { private static final char[] hexchars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; private StringUtils() { } public static String encodeXML(String sValue) { if (sValue == null) { return null; } else { StringBuilder buffer = new StringBuilder(); for (int i = 0; i < sValue.length(); i++) { char charToCompare = sValue.charAt(i); if (charToCompare == '&') { buffer.append("&"); } else if (charToCompare == '<') { buffer.append("<"); } else if (charToCompare == '>') { buffer.append(">"); } else if (charToCompare == '\"') { buffer.append("""); } else if (charToCompare == '\'') { buffer.append("'"); } else { buffer.append(charToCompare); } } return buffer.toString(); } } public static String byte2hex(byte[] binput) { StringBuilder sb = new StringBuilder(binput.length * 2); for (int i = 0; i < binput.length; i++) { int high = ((binput[i] & 0xF0) >> 4); int low = (binput[i] & 0x0F); sb.append(hexchars[high]); sb.append(hexchars[low]); } return sb.toString(); } public static byte[] hex2byte(String sinput) { int length = sinput.length(); if ((length & 0x01) != 0) { throw new IllegalArgumentException("odd number of characters."); } byte[] out = new byte[length >> 1]; // two characters form the hex value. for (int i = 0, j = 0; j < length; i++) { int f = Character.digit(sinput.charAt(j++), 16) << 4; f = f | Character.digit(sinput.charAt(j++), 16); out[i] = (byte) (f & 0xFF); } return out; } public static String readResource(String resource) throws IOException { InputStream in = StringUtils.class.getResourceAsStream(resource); if (in == null) { throw new FileNotFoundException(resource); } ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } byte[] data = out.toByteArray(); return new String(data, "UTF-8"); } public static boolean isNumber(String sCardNumber) { if ((sCardNumber == null) || (sCardNumber.equals(""))) { return false; } for (int i = 0; i < sCardNumber.length(); i++) { char c = sCardNumber.charAt(i); if (c != '0' && c != '1' && c != '2' && c != '3' && c != '4' && c != '5' && c != '6' && c != '7' && c != '8' && c != '9') { return false; } } return true; } public static String getWhiteString(int iSize, char cWhiteChar) { char[] cFill = new char[iSize]; for (int i = 0; i < iSize; i++) { cFill[i] = cWhiteChar; } return new String(cFill); } public static String getWhiteString(int iSize) { return getWhiteString(iSize, ' '); } public static String alignLeft(String sLine, int iSize) { if (sLine.length() > iSize) { return sLine.substring(0, iSize); } else { return sLine + getWhiteString(iSize - sLine.length()); } } public static String alignRight(String sLine, int iSize) { if (sLine.length() > iSize) { return sLine.substring(sLine.length() - iSize); } else { return getWhiteString(iSize - sLine.length()) + sLine; } } public static String alignCenter(String sLine, int iSize) { if (sLine.length() > iSize) { return alignRight(sLine.substring(0, (sLine.length() + iSize) / 2), iSize); } else { return alignRight(sLine + getWhiteString((iSize - sLine.length()) / 2), iSize); } } public static String alignCenter(String sLine) { return alignCenter(sLine, 42); } }