/** * Создание запроса с разбиением по страницам (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(); }
Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения
четверг, 30 января 2014 г.
Pagination для Oracle
вторник, 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
Необходима в случае отформатированного документа.
Тогда содержимое 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
выполняем слудующие команды в консоли:
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);
}
Подписаться на:
Сообщения (Atom)