2014年11月12日 星期三
QuartzSchedulerListener
<listener>
<listener-class>
com.quart.QuartzSchedulerListener
</listener-class>
</listener>
2014年11月11日 星期二
HibernateUtil
http://www.mediatek.com.tw/?a=url&k=86218eff&u=aHR0cDovL3NlZ21lbnRmYXVsdC5jb20vYmxvZy93YW5nZGFpLzExOTAwMDAwMDA2NzM1MzI=&t=SGliZXJuYXRlLWNvcmUgNC4zLjYgRmluYWwg6YWN572u5Lit5Ye6546w55qE5LiA5Lqb5bCP6Zeu6aKYIC0gU2VnbWVudC4uLg==&s=aGliZXJuYXRlNC4zLjbphY3nva4=
package com;
import javax.persistence.EntityManagerFactory;
import org.apache.struts2.ServletActionContext;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private org.hibernate.Transaction tx;
private Session session;
private static Boolean isAvaliable = true;
private static final SessionFactory sessionFactory = buildSessionFactory();
public HibernateUtil(){
this.session = sessionFactory.openSession();
}
private static SessionFactory buildSessionFactory() {
try {
Configuration config = new Configuration();
String sessionFactoryPath = (String) ServletActionContext.getServletContext().getInitParameter("SessionFactoryPath");
config.configure(sessionFactoryPath);
return config.buildSessionFactory(new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build());
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public String[] getColumnNames(Class<?> calsss) {
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(calsss);
String[] columnNames = hibernateMetadata.getPropertyNames();
return columnNames;
}
public org.hibernate.type.Type[] getColumnTypes(Class<?> calsss) {
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(calsss);
org.hibernate.type.Type[] columnTypes = hibernateMetadata.getPropertyTypes();
return columnTypes;
}
public Boolean getIsAvaliable() {
return isAvaliable;
}
public Session getSession() {
return this.session;
}
public int sessionBeginTransaction() {
try {
tx = session.beginTransaction();
} catch (HibernateException e) {
e.printStackTrace();
return 0;
}
return 1;
}
public int commitTransactionAndClose() {
try {
this.tx.commit();
System.err.println("commitTransactionAndClose() sus");
return 1;
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
return 0;
} finally {
session.close();
}
}
public Transaction getTransaction() {
return this.tx;
}
public void close() {
try {
if (tx != null) {
if (tx.isActive()) {
tx.rollback();
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
20150214
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
new Configuration().configure().buildSessionFactory(
new StandardServiceRegistryBuilder().build() );
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
return null;
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
package com;
import javax.persistence.EntityManagerFactory;
import org.apache.struts2.ServletActionContext;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private org.hibernate.Transaction tx;
private Session session;
private static Boolean isAvaliable = true;
private static final SessionFactory sessionFactory = buildSessionFactory();
public HibernateUtil(){
this.session = sessionFactory.openSession();
}
private static SessionFactory buildSessionFactory() {
try {
Configuration config = new Configuration();
String sessionFactoryPath = (String) ServletActionContext.getServletContext().getInitParameter("SessionFactoryPath");
config.configure(sessionFactoryPath);
return config.buildSessionFactory(new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build());
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public String[] getColumnNames(Class<?> calsss) {
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(calsss);
String[] columnNames = hibernateMetadata.getPropertyNames();
return columnNames;
}
public org.hibernate.type.Type[] getColumnTypes(Class<?> calsss) {
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(calsss);
org.hibernate.type.Type[] columnTypes = hibernateMetadata.getPropertyTypes();
return columnTypes;
}
public Boolean getIsAvaliable() {
return isAvaliable;
}
public Session getSession() {
return this.session;
}
public int sessionBeginTransaction() {
try {
tx = session.beginTransaction();
} catch (HibernateException e) {
e.printStackTrace();
return 0;
}
return 1;
}
public int commitTransactionAndClose() {
try {
this.tx.commit();
System.err.println("commitTransactionAndClose() sus");
return 1;
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
return 0;
} finally {
session.close();
}
}
public Transaction getTransaction() {
return this.tx;
}
public void close() {
try {
if (tx != null) {
if (tx.isActive()) {
tx.rollback();
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
20150214
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
new Configuration().configure().buildSessionFactory(
new StandardServiceRegistryBuilder().build() );
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
return null;
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
gson TableExclusionStrategy
http://hashtagfail.com/post/44606137082/mobile-services-android-serialization-gson
http://stackoverflow.com/questions/4802887/gson-how-to-exclude-specific-fields-from-serialization-without-annotations
public class TableExclusionStrategy implements ExclusionStrategy{
@Override
public boolean shouldSkipField(FieldAttributes f) {
if(f.getName().equals("transactions")){
return true;
}
if(f.getName().equals("memberowners")){
return true;
}
return false;
}
@Override
public boolean shouldSkipClass(Class<?> f) {
return false;
}
}
2014年11月10日 星期一
ATTRIBUTE NAME: " + field.getName()
http://stackoverflow.com/questions/1038308/how-to-get-the-list-of-all-attributes-of-a-java-object-using-beanutils-introspec
java得到類別名稱
String name = "godleon";
Class stringClass = name.getClass();
System.out.println("類別名稱:" + stringClass.getName());
System.out.println("getSimpleName:" + stringClass.getSimpleName());
System.out.println("是否為介面:" + stringClass.isInterface());
System.out.println("是否為基本型態:" + stringClass.isPrimitive());
System.out.println("是否為陣列物件:" + stringClass.isArray());
System.out.println("父類別名稱:" + stringClass.getSuperclass().getName());
Class stringClass = name.getClass();
System.out.println("類別名稱:" + stringClass.getName());
System.out.println("getSimpleName:" + stringClass.getSimpleName());
System.out.println("是否為介面:" + stringClass.isInterface());
System.out.println("是否為基本型態:" + stringClass.isPrimitive());
System.out.println("是否為陣列物件:" + stringClass.isArray());
System.out.println("父類別名稱:" + stringClass.getSuperclass().getName());
2014年11月7日 星期五
BufferedReader example ->texttoInsertSql
texttoInsertSql:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package acerrcode;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author linkulife
*/
public class AcerRcode {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File file = null;
file = new File("D:\\keith\\linkulife\\AcerRcode.txt");
readfileByLine(file);
}
public static void readfileByLine(File file) {
ArrayList<String[]> list = new ArrayList<String[]>();
InputStreamReader isr = null;
try {
try {
isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader br = new BufferedReader(isr);
String str = null;
try {
while((str = br.readLine())!=null){
list.add(parseTosql(str));
}
} catch (IOException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
//System.out.println(Arrays.toString(list));
}
public static String[] parseTosql(String line) {
String[] linearray = line.split("\\s+");
//System.out.println(Arrays.toString(linearray));
String sql=setToSql(linearray[0],linearray[1],linearray[2],linearray[3]);
System.out.println(sql);
return linearray;
}
public static String setToSql(String acerCode, String acerResponse, String ewalletCode, String appShowMsg) {
String temp = "INSERT INTO `ewalletValue`.`acerResponse` (`acerResponseId`, `acerCode`, `acerResponse`, `ewalletCode`, `appShowMsg`) VALUES (NULL"
+ ", '" + acerCode + "', '" + acerResponse + "', '" + ewalletCode + "', '" + appShowMsg + "');";
return temp;
}
}
input:
00 授權成功 A00 交易成功
01 請查詢發卡銀行 A01 交易失敗(A01):請洽原發卡行
02 請查詢發卡銀行 A02 交易失敗(A02):請洽原發卡行
03 未核准之特約店 A03 交易失敗(A03):請洽客服
04 非正常卡 A04 交易失敗(A04):卡片異常,請洽原發卡行
05 拒絕交易 A05 交易失敗(A05):拒絕交易,請洽客服
12 本交易不接受 A12 交易失敗(A12):拒絕交易,請洽客服
13 金額不符 A13 交易失敗(A13):請洽客服
14 帳號不符 A14 交易失敗(A14):請洽客服
15 原發卡行不符 A15 交易失敗(A15):請洽客服
19 請重試交易 A19 交易失敗(A19):請洽原發卡行確認交易結果
25 請查詢銀行 A25 交易失敗(A25):請洽原發卡行
30 請查詢銀行 A30 交易失敗(A30):請洽原發卡行
31 本交易不接受 A31 交易失敗(A31):拒絕交易,請洽客服
41 非正常卡 A41 交易失敗(A41):卡片異常,請洽原發卡行
43 非正常卡 A43 交易失敗(A43):卡片異常,請洽原發卡行
51 餘額不足 A51 交易失敗(A51):額度不足,請洽原發卡行
54 卡片過期 A54 交易失敗(A54):卡片過期,請洽原發卡行
55 密碼錯誤 A55 交易失敗(A55):請洽客服
57 本交易不接受 A57 交易失敗(A57):拒絕交易,請洽客服
58 本交易不接受 A58 交易失敗(A58):拒絕交易,請洽客服
59 無此帳號 A59 交易失敗(A59):請洽客服
61 提款超過限額 A61 交易失敗(A61):請洽原發卡行
62 非正常卡 A62 交易失敗(A62):卡片異常,請洽原發卡行
63 主機安全碼有誤 A63 交易失敗(A63):請洽客服
75 密碼超過次數 A75 交易失敗(A75):請洽客服
77 總額不符 A77 交易失敗(A77):請洽客服
79 批號已開啟 A79 交易失敗(A79):請洽客服
80 批號錯誤 A80 交易失敗(A80):請洽客服
85 無此批號 A85 交易失敗(A85):請洽客服
88 特約店帳號不符 A88 交易失敗(A88):請洽客服
89 終端機號錯誤 A89 交易失敗(A89):請洽客服
91 請查詢發卡銀行 A91 交易失敗(A91):請洽原發卡行
94 傳輸重覆 A94 交易失敗(A94):請洽客服
95 檔案傳輸中 A95 交易失敗(A95):請洽客服
96 主機系統故障 A96 交易失敗(A96):請洽客服
outpunt
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package acerrcode;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author linkulife
*/
public class AcerRcode {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File file = null;
file = new File("D:\\keith\\linkulife\\AcerRcode.txt");
readfileByLine(file);
}
public static void readfileByLine(File file) {
ArrayList<String[]> list = new ArrayList<String[]>();
InputStreamReader isr = null;
try {
try {
isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader br = new BufferedReader(isr);
String str = null;
try {
while((str = br.readLine())!=null){
list.add(parseTosql(str));
}
} catch (IOException ex) {
Logger.getLogger(AcerRcode.class.getName()).log(Level.SEVERE, null, ex);
}
//System.out.println(Arrays.toString(list));
}
public static String[] parseTosql(String line) {
String[] linearray = line.split("\\s+");
//System.out.println(Arrays.toString(linearray));
String sql=setToSql(linearray[0],linearray[1],linearray[2],linearray[3]);
System.out.println(sql);
return linearray;
}
public static String setToSql(String acerCode, String acerResponse, String ewalletCode, String appShowMsg) {
String temp = "INSERT INTO `ewalletValue`.`acerResponse` (`acerResponseId`, `acerCode`, `acerResponse`, `ewalletCode`, `appShowMsg`) VALUES (NULL"
+ ", '" + acerCode + "', '" + acerResponse + "', '" + ewalletCode + "', '" + appShowMsg + "');";
return temp;
}
}
input:
00 授權成功 A00 交易成功
01 請查詢發卡銀行 A01 交易失敗(A01):請洽原發卡行
02 請查詢發卡銀行 A02 交易失敗(A02):請洽原發卡行
03 未核准之特約店 A03 交易失敗(A03):請洽客服
04 非正常卡 A04 交易失敗(A04):卡片異常,請洽原發卡行
05 拒絕交易 A05 交易失敗(A05):拒絕交易,請洽客服
12 本交易不接受 A12 交易失敗(A12):拒絕交易,請洽客服
13 金額不符 A13 交易失敗(A13):請洽客服
14 帳號不符 A14 交易失敗(A14):請洽客服
15 原發卡行不符 A15 交易失敗(A15):請洽客服
19 請重試交易 A19 交易失敗(A19):請洽原發卡行確認交易結果
25 請查詢銀行 A25 交易失敗(A25):請洽原發卡行
30 請查詢銀行 A30 交易失敗(A30):請洽原發卡行
31 本交易不接受 A31 交易失敗(A31):拒絕交易,請洽客服
41 非正常卡 A41 交易失敗(A41):卡片異常,請洽原發卡行
43 非正常卡 A43 交易失敗(A43):卡片異常,請洽原發卡行
51 餘額不足 A51 交易失敗(A51):額度不足,請洽原發卡行
54 卡片過期 A54 交易失敗(A54):卡片過期,請洽原發卡行
55 密碼錯誤 A55 交易失敗(A55):請洽客服
57 本交易不接受 A57 交易失敗(A57):拒絕交易,請洽客服
58 本交易不接受 A58 交易失敗(A58):拒絕交易,請洽客服
59 無此帳號 A59 交易失敗(A59):請洽客服
61 提款超過限額 A61 交易失敗(A61):請洽原發卡行
62 非正常卡 A62 交易失敗(A62):卡片異常,請洽原發卡行
63 主機安全碼有誤 A63 交易失敗(A63):請洽客服
75 密碼超過次數 A75 交易失敗(A75):請洽客服
77 總額不符 A77 交易失敗(A77):請洽客服
79 批號已開啟 A79 交易失敗(A79):請洽客服
80 批號錯誤 A80 交易失敗(A80):請洽客服
85 無此批號 A85 交易失敗(A85):請洽客服
88 特約店帳號不符 A88 交易失敗(A88):請洽客服
89 終端機號錯誤 A89 交易失敗(A89):請洽客服
91 請查詢發卡銀行 A91 交易失敗(A91):請洽原發卡行
94 傳輸重覆 A94 交易失敗(A94):請洽客服
95 檔案傳輸中 A95 交易失敗(A95):請洽客服
96 主機系統故障 A96 交易失敗(A96):請洽客服
outpunt
2014年11月6日 星期四
log4j to separate log files
http://stackoverflow.com/questions/9652032/how-can-i-create-2-separate-log-files-with-one-log4j-config-file
# Define the root logger with appender file A1
log4j.rootLogger = INFO,stdout,detail
#log4j.category.* private static Logger log = Logger.getLogger("struts2");
log4j.category.struts2 = WARN,struts2
#private static Logger log = Logger.getLogger("error");
log4j.category.error = ERROR,error
log4j.category.org.hibernate = INFO,hibernatelog
# Direct log messages to a log file
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/error.log
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.MaxFileSize=10MB
log4j.appender.error.MaxBackupIndex=100
log4j.appender.error.Append=true
log4j.appender.error.encoding=UTF-8
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a log file
log4j.appender.struts2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.struts2.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/struts2ex.log
log4j.appender.struts2.DatePattern='.'yyyy-MM-dd
log4j.appender.struts2.MaxFileSize=10MB
log4j.appender.struts2.MaxBackupIndex=100
log4j.appender.struts2.Append=true
log4j.appender.struts2.encoding=UTF-8
log4j.appender.struts2.layout=org.apache.log4j.PatternLayout
log4j.appender.struts2.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a hibernatelog file
log4j.appender.hibernatelog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.hibernatelog.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/hibernatelog.log
log4j.appender.hibernatelog.DatePattern='.'yyyy-MM-dd
log4j.appender.hibernatelog.MaxFileSize=10MB
log4j.appender.hibernatelog.MaxBackupIndex=100
log4j.appender.hibernatelog.Append=true
log4j.appender.hibernatelog.layout=org.apache.log4j.PatternLayout
log4j.appender.hibernatelog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a detail file
log4j.appender.detail=org.apache.log4j.DailyRollingFileAppender
log4j.appender.detail.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/detail.log
log4j.appender.detail.DatePattern='.'yyyy-MM-dd
log4j.appender.detail.MaxFileSize=10MB
log4j.appender.detail.MaxBackupIndex=100
log4j.appender.detail.Append=true
log4j.appender.detail.layout=org.apache.log4j.PatternLayout
log4j.appender.detail.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# hibernate
org.hibernate.tool.hbm2ddl=hibernatelog
# Define the root logger with appender file A1
log4j.rootLogger = INFO,stdout,detail
#log4j.category.* private static Logger log = Logger.getLogger("struts2");
log4j.category.struts2 = WARN,struts2
#private static Logger log = Logger.getLogger("error");
log4j.category.error = ERROR,error
log4j.category.org.hibernate = INFO,hibernatelog
# Direct log messages to a log file
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/error.log
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.MaxFileSize=10MB
log4j.appender.error.MaxBackupIndex=100
log4j.appender.error.Append=true
log4j.appender.error.encoding=UTF-8
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a log file
log4j.appender.struts2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.struts2.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/struts2ex.log
log4j.appender.struts2.DatePattern='.'yyyy-MM-dd
log4j.appender.struts2.MaxFileSize=10MB
log4j.appender.struts2.MaxBackupIndex=100
log4j.appender.struts2.Append=true
log4j.appender.struts2.encoding=UTF-8
log4j.appender.struts2.layout=org.apache.log4j.PatternLayout
log4j.appender.struts2.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a hibernatelog file
log4j.appender.hibernatelog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.hibernatelog.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/hibernatelog.log
log4j.appender.hibernatelog.DatePattern='.'yyyy-MM-dd
log4j.appender.hibernatelog.MaxFileSize=10MB
log4j.appender.hibernatelog.MaxBackupIndex=100
log4j.appender.hibernatelog.Append=true
log4j.appender.hibernatelog.layout=org.apache.log4j.PatternLayout
log4j.appender.hibernatelog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# Direct log messages to a detail file
log4j.appender.detail=org.apache.log4j.DailyRollingFileAppender
log4j.appender.detail.File=/opt/apache-tomcat-7.0.54/webapps/mwallet/detail.log
log4j.appender.detail.DatePattern='.'yyyy-MM-dd
log4j.appender.detail.MaxFileSize=10MB
log4j.appender.detail.MaxBackupIndex=100
log4j.appender.detail.Append=true
log4j.appender.detail.layout=org.apache.log4j.PatternLayout
log4j.appender.detail.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p](%F:%L) - %m%n
# hibernate
org.hibernate.tool.hbm2ddl=hibernatelog
DaoFactory greendao
http://android.hew.io/octa-george/android-greendao-sample
1.https://github.com/SureCase/GreenDaoForAndroidStudio
android {
package citygo.ewallet.com.facebookexample;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import dao.BoxDao;
import dao.DaoMaster;
import dao.DaoSession;
import de.greenrobot.dao.AbstractDao;
/**
* Created by linkulife on 2014/11/5.
*/
public class DaoFactory {
private DaoSession daoSession;
private static DaoFactory daoFactory;
public static DaoFactory getInstance(){
if(daoFactory==null){
daoFactory = new DaoFactory();
}
return daoFactory;
}
public void init(Context context){
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "example-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
public void beginTransaction(AbstractDao dao){
dao.getDatabase().beginTransaction();
}
public void rollback(AbstractDao dao){
dao.getDatabase().endTransaction();
}
public void commit(AbstractDao dao){
dao.getDatabase().setTransactionSuccessful();
dao.getDatabase().endTransaction();
}
public void setDaoSession(DaoSession daoSession) {
this.daoSession = daoSession;
}
public BoxDao getBoxDao(){
return daoSession.getBoxDao();
}
}
public class DaoExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
DaoFactory.getInstance().init(this);
}
}
使用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
BoxDao b = DaoFactory.getInstance().getBoxDao();
b.deleteAll();
Box box= new Box();
box.setDescription("de");
box.setName("name");
b.insertOrReplace(box);
DaoFactory.getInstance().beginTransaction(b);
Box box1= new Box();
box1.setName("name2");
b.insert(box1);
DaoFactory.getInstance().rollback(b);
List<Box> all = b.loadAll();
for(Box bb:all){
Log.d("",""+bb.getName());
}
}
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".DaoExampleApplication"
>

package ex.lfo.com.myapplicationex;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import de.greenrobot.dao.query.QueryBuilder;
import greendao.BoxDao;
import greendao.DaoMaster;
import greendao.DaoSession;
/**
* Created by Administrator on 2015/2/14.
*/
public class Orm {
private static Orm instance=null;
private SQLiteOpenHelper helper;
private SQLiteDatabase db;
private DaoMaster daoMaster;
private Orm(Context context){
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
initDb(context);
}
private void initDb(Context context) {
helper = new DaoMaster.DevOpenHelper(context, "box", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
}
public DaoSession getDaoSession(){
DaoSession daoSession = daoMaster.newSession();
// BoxDao boxDao= daoSession.getBoxDao();
return daoSession;
}
public static Orm getInstance(Context context ){
if(instance==null){
instance=new Orm(context);
}
return instance;
}
}
1.https://github.com/SureCase/GreenDaoForAndroidStudio
Download module
2.Add module to project
3.
Connect generator with project
4.
Run module
5.
Make project aware of GreenDao files
6.- Project is still not aware of new Java files because it isn't located in
../<PROJECT NAME>/src/main/javadirectory. To fix this we must specify projects source sets. It is important to point two java file sources:/src/main/javaand/src/main/java-gen. You can do it by placingsourceSetssection intoandroidsection ingradle.buildfile:
android {
sourceSets {main {manifest.srcFile 'src/main/AndroidManifest.xml'java.srcDirs = ['src/main/java', 'src/main/java-gen']res.srcDirs = ['src/main/res']}}}
package citygo.ewallet.com.facebookexample;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import dao.BoxDao;
import dao.DaoMaster;
import dao.DaoSession;
import de.greenrobot.dao.AbstractDao;
/**
* Created by linkulife on 2014/11/5.
*/
public class DaoFactory {
private DaoSession daoSession;
private static DaoFactory daoFactory;
public static DaoFactory getInstance(){
if(daoFactory==null){
daoFactory = new DaoFactory();
}
return daoFactory;
}
public void init(Context context){
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "example-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
public void beginTransaction(AbstractDao dao){
dao.getDatabase().beginTransaction();
}
public void rollback(AbstractDao dao){
dao.getDatabase().endTransaction();
}
public void commit(AbstractDao dao){
dao.getDatabase().setTransactionSuccessful();
dao.getDatabase().endTransaction();
}
public void setDaoSession(DaoSession daoSession) {
this.daoSession = daoSession;
}
public BoxDao getBoxDao(){
return daoSession.getBoxDao();
}
}
public class DaoExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
DaoFactory.getInstance().init(this);
}
}
使用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
BoxDao b = DaoFactory.getInstance().getBoxDao();
b.deleteAll();
Box box= new Box();
box.setDescription("de");
box.setName("name");
b.insertOrReplace(box);
DaoFactory.getInstance().beginTransaction(b);
Box box1= new Box();
box1.setName("name2");
b.insert(box1);
DaoFactory.getInstance().rollback(b);
List<Box> all = b.loadAll();
for(Box bb:all){
Log.d("",""+bb.getName());
}
}
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".DaoExampleApplication"
>

package ex.lfo.com.myapplicationex;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import de.greenrobot.dao.query.QueryBuilder;
import greendao.BoxDao;
import greendao.DaoMaster;
import greendao.DaoSession;
/**
* Created by Administrator on 2015/2/14.
*/
public class Orm {
private static Orm instance=null;
private SQLiteOpenHelper helper;
private SQLiteDatabase db;
private DaoMaster daoMaster;
private Orm(Context context){
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
initDb(context);
}
private void initDb(Context context) {
helper = new DaoMaster.DevOpenHelper(context, "box", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
}
public DaoSession getDaoSession(){
DaoSession daoSession = daoMaster.newSession();
// BoxDao boxDao= daoSession.getBoxDao();
return daoSession;
}
public static Orm getInstance(Context context ){
if(instance==null){
instance=new Orm(context);
}
return instance;
}
}
2014年11月5日 星期三
Android Icons
http://www.creativefreedom.co.uk/icon-designers-blog/android-4-1-icon-size-guide-made-simple/
2014年11月1日 星期六
MYSQL找出兩個月前
SELECT * FROM `servicecard` where `update_date` > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
兩個月前
http://stackoverflow.com/questions/2793619/mysql-query-working-with-interval-and-curdate
訂閱:
意見 (Atom)