Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения

четверг, 30 января 2014 г.

Pagination для Oracle

/**
* Создание запроса с разбиением по страницам (pagination) для Oracle
*/
protected String preparePaginatedQueryOracle(String originalQuery) {
        StringBuilder query = new StringBuilder();
        query.append("select * from (");
        query.append("select a.*, ROWNUM rnum from (");
        query.append(originalQuery);
        query.append(") a");
        query.append(" where ROWNUM <= ? )");
        query.append(" where rnum  >= ?");
        return query.toString();
    }

вторник, 14 мая 2013 г.

Форматируем XML из строки


Иногда возникает необходимость отформатировать XML представленный в виде linarized строки (то есть без отступов и переводов строки) Для этого я использую следующие функции:

import java.io.ByteArrayOutputStream;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class XMLUtils {

 private static final Logger logger = Logger.getLogger(XMLUtils.class);

 /**
  * Возвращает переформатированную строку
  * 
  * @param inputString
  *            Строка содержащая неформатированный XML
  * @return Строка содержащая отформатированный XML
  */
 public static String formatXMLString(String inputString) {
  String outputString = "";
  try {
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder db = dbf.newDocumentBuilder();
   InputSource is = new InputSource(new StringReader(inputString));
   Document document = db.parse(is);
   outputString = documentToFormattedString(document);
  } catch (Exception ex) {
   logger.warn(ex.getMessage(), ex);
  }
  return outputString;
 }

 /**
  * Возвращает строковое представление Узла(Node) в форматированном виде
  * 
  * @param node
  *            Объект Node
  * @return Строка содержащая отформатированный XML
  */
 public static String documentToFormattedString(Node node) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();

  try {
   DOMSource source = new DOMSource(node);
   StreamResult result = new StreamResult(baos);
   TransformerFactory transFactory = TransformerFactory.newInstance();
   Transformer transformer = transFactory.newTransformer();
   transformer
     .setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
   transformer.setOutputProperty(OutputKeys.METHOD, "xml");
   transformer.setOutputProperty(OutputKeys.INDENT, "yes");
   // Без данного параметра не работают отступы
   transformer.setOutputProperty(
     "{http://xml.apache.org/xslt}indent-amount", "2");
   transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

   transformer.transform(source, result);

  } catch (Exception ex) {
   logger.warn(ex.getMessage(), ex);
  }

  return new String(baos.toByteArray());
 }
}

среда, 13 марта 2013 г.

Функция, которая возвращает первый элемент типа Node.ELEMENT_NODE из SOAPBody

Возвращает первый элемент типа Node.ELEMENT из SOAPBody.
Необходима в случае отформатированного документа.
Тогда содержимое body представляет собой массив из трех Node:
Первая и последняя ноды представляют собой Node.TEXT_NODE с содержимым = "\n" или чем-то подобным (табуляции, переводы строки и т.п.).
Для получения значимого содержимого перебираем массив через body.getChildElements() и находим Node с типом Node.ELEMENT_NODE

/**
  * Возвращает первый элемент из SOAPBody
  * Необходимо в случае отформатированного документа, когда body.getFirstChild() == "\n"
  * @param body
  * @return
  */
 public Node getFirstChildElement(SOAPBody body) {
  @SuppressWarnings("unchecked")
  Iterator nodes = body.getChildElements();
  while (nodes.hasNext()) {
   Node currentNode = nodes.next();
   if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
    return currentNode;
   }
  }
  return null;
 }

Получаем строковое представление Узла(Node) в форматированном виде


    /**
     * Возвращает строковое представление Узла(Node) в форматированном виде
     *
     * @param node Объект Node
     * @return Строковое представление
     */
    public static String documentToFormattedString(Node node) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        try {
            DOMSource source = new DOMSource(node);
            StreamResult result = new StreamResult(baos);
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transformer = transFactory.newTransformer();

            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            
            transformer.transform(source, result);

        } catch (Exception ex) {
            logger.warn(ex.getMessage(), ex);
        }

        return new String(baos.toByteArray());
    }

вторник, 12 марта 2013 г.

Возможные значения hibernate.hbm2ddl.auto


validate: validate the schema, makes no changes to the database.
update: update the schema.
create: creates the schema, destroying previous data.
create-drop: drop the schema at the end of the session.

Установка Oracle JDK под Ubuntu 12.10



1) Идем на сайт загрузок Java SE, и качаем пакет(.rpm), согласно нашей архитектуре

2) Устанавливаем alien (конвертер пакетов rpm to deb).
sudo apt-get install alien

3) Запускаем alien.
sudo alien jdk-7u4-linux-x64.rpm --scripts
Будет сгенерирован .deb пакет, в той же директории.

4) Далее устанавливаем пакет.
sudo dpkg -i jdk_1.7.004-1_amd64.deb
mkdir -p ~/.mozilla/plugins
создаем симлинки
ln -s /usr/java/jdk1.7.0_04/jre/lib/amd64/libjavaplugin_jni.so ~/.mozilla/plugins/
ln -s /usr/java/jdk1.7.0_04/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins/

5) Если уже была установлена OpenJDK, то выполняем следующие действия:
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_04/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 1
sudo update-alternatives --config javac
sudo update-alternatives --config java

6) Проверяем версию java
java -version


воскресенье, 3 марта 2013 г.

Настройка SVN через JavaHL в Eclipse под Ubuntu

Ставим Subclipse со всеми модулями в Eclipse

выполняем слудующие команды в консоли:

sudo apt-get install libsvn-java
sudo find / -name libsvnjavahl-1.so

копируем найденный путь и вставляем его в eclipse.ini (выделено жирным):


-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Djava.library.path=/usr/lib/i386-linux-gnu/jni
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m


четверг, 28 февраля 2013 г.

Конвертация java.util.Date в javax.xml.datatype.XMLGregorianCalendar


private XMLGregorianCalendar convertDateToXMLGregorianCalendar(Date date) throws Throwable {
 GregorianCalendar gc = new GregorianCalendar();
 gc.setTime(date);
 return DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
}