2014年8月24日 星期日

android button custum state_pressed

http://mrbool.com/how-to-customize-different-buttons-in-android/27747

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" 
        android:drawable="@drawable/one">
</item>
  
    <item android:drawable="@drawable/two"> //these is the normal state of button when it is not pressed. And the background is provided when it is not pressed.
</item>

</selector>

2014年8月22日 星期五

Jdbcmysql pst.getGeneratedKeys//取得新增之後的ID

    Jdbcmysql jdbcmysql = new Jdbcmysql("citygostore");
        Connection con = jdbcmysql.getConnection();
        con.setAutoCommit(false);//交易
       
        int memberowner_effectLines = 0;
       
        try {
            pst = con.prepareStatement("INSERT INTO `citygostore`.`memberowner` (`mo_membersn`, `sc_sn`,card_number, `mo_cardstatus`, `memberowner_createDate`) VALUES "
                            + "( ?, ?,?, ?, ?)",Statement.RETURN_GENERATED_KEYS);
            System.out.println("pst:"+pst);
        } catch(MySQLIntegrityConstraintViolationException e1){
            postMemberownerReturnMes.put("issus", "-1");//想要新增不存在的卡片
            con.rollback();//交易
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            con.rollback();//交易
            postMemberownerReturnMes.put("issus", "0");
            return SUCCESS;
        }

        try {
            pst.setInt(1,Integer.valueOf(mo_membersn ));
            pst.setInt(2, Integer.valueOf(sc_sn));
            pst.setString(3, card_number);
            pst.setInt(4, Integer.valueOf(mo_cardstatus));
            java.util.Date dt = new java.util.Date();
            java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String currentTime = sdf.format(dt);
           
            pst.setString(5,currentTime);
            memberowner_effectLines = pst.executeUpdate();
            System.out.println("memberowner_effectLines:"+memberowner_effectLines);
            postMemberownerReturnMes.put("effectLines", String.valueOf(memberowner_effectLines));
           
            ResultSet rs = pst.getGeneratedKeys();//取得新增之後的ID     pst1 = connection.prepareStatement(,Statement.RETURN_GENERATED_KEYS)
            if (rs != null && rs.next()) {
                Long key = rs.getLong(1);
                System.out.println("generatedbTicket mo_sn:" + key);
                postMemberownerReturnMes.put("mo_sn", String.valueOf(key));
            }
           

            if (memberowner_effectLines == 0) {
                postMemberownerReturnMes.put("issus", "0");
            } else {
                postMemberownerReturnMes.put("issus", "1");
                addCredit_card(con,sc_sn,mo_membersn,card_number,card_name,expire_date,valid_number);
               
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            con.rollback();//交易
            postMemberownerReturnMes.put("issus", "0");
        }
       
   

        return SUCCESS;

2014年8月21日 星期四

Android 输入法 控制 切换

http://blog.csdn.net/wdzayyt/article/details/7489551
    accountEditText.requestFocus();
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);

///////////////////////////

 getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);


2014年8月20日 星期三

mysql datatime java

    java.util.Date dt = new java.util.Date();
            java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String currentTime = sdf.format(dt);
           
            pst.setString(4,currentTime);
            effectLines = pst.executeUpdate();

smd = r.getMetaData();



Jdbcmysql jdbcmysql=new Jdbcmysql("citygostore");
        ResultSet r=jdbcmysql.executeQuery(Citygostore.sql);
        ResultSetMetaData rsmd = null;
        rsmd = r.getMetaData();

index是從1開始

14個欄位 rsmd.getColumnCount():14,
rsmd.getColumnType(1):4
第一個名稱叫做  rsmd.getColumnLabel(1):mo_sn
rsmd.getCatalogName(1):citygostore
rsmd.getColumnClassName(1):java.lang.Integer

ADD FOREIGN KEY ( `saleTypeId` ) REFERENCES

ALTER TABLE `ticket` ADD FOREIGN KEY ( `saleTypeId` ) REFERENCES `Ticket`.`saleType` (
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ;

2014年8月19日 星期二

ORMLite教學

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite.html#Top
1先建立物件Ticket public class Ticket {
2TicketDAOInterface public interface TicketDAOInterface extends BaseDAOInterface 3.TicketDAO public class TicketDAO extends BaseDAO implements TicketDAOInterface { 4.DAOFactory新增

ormlite

「 http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite.html






2014年8月18日 星期一

removeOtherFragments

private void removeOtherFragments(){ List allFragments = getChildFragmentManager().getFragments(); Log.d("OnTicketClick","allFragments.size:"+allFragments.size()); for(Fragment f:allFragments){ if(!f.equals(this)){//除了當前全部關掉 getChildFragmentManager().beginTransaction().remove(f).commit(); } } }

2014年8月16日 星期六

建立關聯mysql

建立關聯之前 要把之前的全部清除 以免產生錯誤

ALTER TABLE `member` ADD FOREIGN KEY ( `signatureId` ) REFERENCES `ewallet`.`signature` (
`signatureId`
) ON DELETE CASCADE ON UPDATE CASCADE  


要從母開始關聯子

2014年8月15日 星期五

Singleton in Android

https://gist.github.com/Akayh/5566992

    public static TicketTool getInstance(){  //新增一個public method getInstance()判斷有沒有new過
         if(ticketTool == null){
             ticketTool = new TicketTool();
         }
         return ticketTool;
       
    }

用法:

TicketTool ticketTool= TicketTool.getInstance();

變數設為PUBLIC 其他都是private

在CLASS外面存取CLASS中的變數要用TicketTool.getInstance().ticket_idArrayList



package com.ewallet.citygo.model;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import com.ewallet.citygo.CGApplication;


public class TicketTool {

    public String getStrResponse() {
        return getInstance().strResponse;
    }


    public void setStrResponse(String strResponse) {
        getInstance().strResponse = strResponse;
    }


    public static ArrayList<String> getTicket_TK_nameArrayList() {
        return getInstance().ticket_TK_nameArrayList;
    }


    public static void setTicket_TK_nameArrayList(
            ArrayList<String> ticket_TK_nameArrayList) {
        getInstance().ticket_TK_nameArrayList = ticket_TK_nameArrayList;
    }


    public static ArrayList<Integer> getTicket_idArrayList() {
        return getInstance().ticket_idArrayList;
    }


    public static void setTicket_idArrayList(ArrayList<Integer> ticket_idArrayList) {
        getInstance().ticket_idArrayList = ticket_idArrayList;
    }


    public static ArrayList<SaleType> getSaleTypeArrayList() {
        return getInstance().SaleTypeArrayList;
    }


    public static void setSaleTypeArrayList(ArrayList<SaleType> saleTypeArrayList) {
        getInstance().SaleTypeArrayList = saleTypeArrayList;
    }


    public static SaleType getTicketToolsaleType() {
        return getInstance().TicketToolsaleType;
    }


    public static void setTicketToolsaleType(SaleType ticketToolsaleType) {
        getInstance().TicketToolsaleType = ticketToolsaleType;
    }


    public static Sale getTicketToolSale() {
        return getInstance().TicketToolSale;
    }


    public static void setTicketToolSale(Sale ticketToolSale) {
        getInstance().TicketToolSale = ticketToolSale;
    }

    final private static String  url="http://106.187.38.21:8080/struts2ex/";
    public  String strResponse;
    public   ArrayList<String> ticket_TK_nameArrayList;
    public   ArrayList<Integer> ticket_idArrayList;
      public   ArrayList<SaleType> SaleTypeArrayList;
      public   SaleType TicketToolsaleType;
      public   Sale TicketToolSale;


    private static TicketTool ticketTool = null;
    
    public static TicketTool getInstance(){  //新增一個public method getInstance()判斷有沒有new過
         if(ticketTool == null){
             ticketTool = new TicketTool();
             getInstance().ticket_TK_nameArrayList= new ArrayList<String> ();
             getInstance().ticket_idArrayList= new ArrayList<Integer>();
             getInstance().SaleTypeArrayList=new ArrayList<SaleType>();
             getInstance(). TicketToolsaleType=new SaleType();
             getInstance().TicketToolSale =new Sale();
         }
         return ticketTool;
        
    }


    //目前不使用
    public String getTicket(){
        //從http://106.187.38.21/funad/funAD/phpMyAdmin/
        //獲得傳回的JSONARRAY
      
        StringRequest strReq = new StringRequest(Method.POST,
                url, new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        Log.d("TAG Ticket", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                //ticket.TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getTicket");
        return ticketTool.strResponse;
      
    }
    //目前不使用
    public void getSaleType(final int id){
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySaleType", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("saleId")==id){
                                    SaleType saleType= new SaleType();
                                    TicketTool.getInstance().TicketToolsaleType.setId(j.getJSONObject(i).getInt("id"));
                                    saleType.setSaleId(j.getJSONObject(i).getInt("saleId"));
                                    saleType.setPrice(j.getJSONObject(i).getInt("price"));
                                    //Log.d("QRShopConsumeFragment getSaleType","price:"+saleType.getPrice());
                                    saleType.setStocks(j.getJSONObject(i).getInt("stocks"));
                                    saleType.setQuantitySold(j.getJSONObject(i).getInt("quantitySold"));
                                    saleType.setBeginningDate(j.getJSONObject(i).getString("beginningDate"));
                                    saleType.setClosingDate(j.getJSONObject(i).getString("closingDate"));
                                    saleType.setUpdate_Date(j.getJSONObject(i).getString("update_Date"));
                                    TicketToolsaleType=saleType;
                                  
                                }else{
                                  
                                }
                              
                                //ticketTool.SaleTypeArrayList.add(saleType);
                              
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getSaleType");
    }
    public void getTK_name(final Context c,final ListView listView){
      
        //從http://106.187.38.21/funad/funAD/phpMyAdmin/
        //獲得傳回的JSONARRAY
        StringRequest strReq = new StringRequest(Method.POST,
                url+"getTK_name", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        Log.d("TAG Ticket", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                              
                                getInstance().ticket_TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
                                getInstance().ticket_idArrayList.add(j.getJSONObject(i).getInt("id"));
                            }
                            listView.setAdapter(new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, ticketTool.ticket_TK_nameArrayList));
                          
                  
                          
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "getTK_name");
  
      
    }

  
    public  void setPrice(final int id,final TextView t) {
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySaleType", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("saleId")==id){
                                    //Log.d("TicketTool setPrice","price:"+j.getJSONObject(i).getInt("price"));
                                    t.setText(String.valueOf(j.getJSONObject(i).getInt("price")));
                                }else{
                                  
                                }
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "setPrice");
      
    }
    public void setTK_description(final int id,final TextView t) {
        StringRequest strReq = new StringRequest(Method.POST,
                url+"querySale", new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {
                        //Log.d("TAG TicketTool getSaleType", response.toString());
                        ticketTool.strResponse=response;
                        try {
                            JSONArray j = new JSONArray(response);
                            for(int i =0;i<j.length();i++){
                                if(j.getJSONObject(i).getInt("id")==id){
                                    t.setText(j.getJSONObject(i).getString("TK_description"));
                                }else{
                                  
                                }
                              
                                //ticketTool.SaleTypeArrayList.add(saleType);
                              
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                      
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
                    }
                });

        CGApplication.getInstance().addToRequestQueue(strReq, "setTK_description");
      
    }
  
  
}

2014年8月14日 星期四

Struts2 action通过struts2返回json方法

http://blog.csdn.net/biboheart/article/details/10427883

一開始 先宣告一個List<MyBean> data;當傳入

public class Getjson extends ActionSupport {
     private static final long serialVersionUID = 1L; 
        private List<MyBean> data; 
        public List<MyBean> getData() {
            return data;
        }


        public void setData(List<MyBean> data) {
            this.data = data;
        }


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


        public String loadJsonFromMap(){ 

            try {
                System.out.println(data.size());

                for (int i = 0; i < data.size(); i++) {
                    System.out.println("Data  " + data.get(i).getUserId() +"-"+ data.get(i).getMessageNo());
                }

                System.out.println("Execute Method");
               
               
            } catch (Exception e) {
                e.printStackTrace();
            }
            return SUCCESS; 
        } 

   
}



<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

    <!-- 声明 Struts2 的属性 例如将 Struts2 后缀改为 .helloween -->
    <!-- <constant name="struts.action.extension" value="helloween"></constant> -->

    <package name="main" extends="json-default">

        <interceptors>
            <interceptor-stack name="defaultStack">
                <interceptor-ref name="json">
                    <param name="enableSMD">true</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="defaultStack" />



        <global-results>
            <result name="login">/login.jsp</result>

        </global-results>

        <action name="jsonFromMap" class="com.Getjson" method="loadJsonFromMap">
            <result type="json" />
        </action>







    </package>

</struts>

HttpAsyncTask

public class HttpAsyncTask extends AsyncTask<String, Void, String> {

    /** The m context. */
    private Context mContext;
   
    /** The m fragment callback. */
    private FragmentCallback mFragmentCallback;//1
   
   
    /**
     * Instantiates a new http async task.
     *
     * @param context the context
     * @param fragmentCallback the fragment callback
     */
    public HttpAsyncTask(Context context , FragmentCallback fragmentCallback) {
        mContext = context;
        mFragmentCallback = fragmentCallback;
    }


    @Override
    protected String doInBackground(String... params) {
        try{
            return JsonUtils.POST(params[0], params[1]);
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }
    // onPostExecute displays the results of the AsyncTask.
    /* (non-Javadoc)
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
     */
    @Override
    protected void onPostExecute(String result) {
        try {
            JSONObject json = new JSONObject(result);

            mFragmentCallback.onTaskDone(json);
           
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}




public class JsonUtils {

    /**
     * String convert to json object.
     *
     * @param value the value
     * @return the JSON object
     */
    public static JSONObject stringConvertToJsonObject(String value) {
        JSONObject object = null;
        try {
            object = new JSONObject(value);
        } catch (Exception e) {
            // TODO: handle exception
        }
       
        return object;
       
    }
   

   
    /**
     * Post.
     *
     * @param url the url
     * @param json the json
     * @return the string
     */
    public static String POST(String url, String json) {
        InputStream inputStream = null;
        String result = "";
        try {

            // 1. create HttpClient
            HttpClient httpclient = new DefaultHttpClient();
            // 2. make POST request to the given URL
            HttpPost httpPost = new HttpPost(url);

            //Log.d("JsonUtils POST json.toString()", json.toString());
            // ** Alternative way to convert Person object to JSON string usin
            // Jackson Lib
            // ObjectMapper mapper = new ObjectMapper();
            // json = mapper.writeValueAsString(person);

            // 5. set json to StringEntity

            StringEntity se = new StringEntity(json.toString(), HTTP.UTF_8);

            // 6. set httpPost Entity
            httpPost.setEntity(se);

            // 7. Set some headers to inform server about the type of the
            // content
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            // httpPost.setHeader("user-agent", "Java/1.7.0_17");
            // httpPost.setHeader("connection", "keep-alive");

            // 8. Execute POST request to the given URL
            HttpResponse httpResponse = httpclient.execute(httpPost);

            // 9. receive response as inputStream
            inputStream = httpResponse.getEntity().getContent();

            // 10. convert inputstream to string
            if (inputStream != null)
                result = convertInputStreamToString(inputStream);
            else
                result = "Did not work!";

        } catch (Exception e) {
            e.printStackTrace();
        }

        // 11. return result
        Utils.myLog(result);
       
           

        return result;
    }

    /**
     * Convert input stream to string.
     *
     * @param inputStream the input stream
     * @return the string
     * @throws IOException Signals that an I/O exception has occurred.
     */
    private static String convertInputStreamToString(InputStream inputStream)
            throws IOException {
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(inputStream));
        String line = "";
        String result = "";
        while ((line = bufferedReader.readLine()) != null)
            result += line;

        inputStream.close();
        return result;

    }
}

Jdbcmysql

 兩個class Db Jdbcmysql


 package com;

import com.opensymphony.xwork2.ActionSupport;

public class Db extends ActionSupport {
    /**
     *
     */
    private int id ;
    private static final long serialVersionUID = 7562913232984175945L;

    public String execute() {
        Jdbcmysql j =new Jdbcmysql();
        j.SelectTable1();
        return SUCCESS;
      
    }
}






package com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class Jdbcmysql {
    private Connection con = null; // Database objects
    // 連接object
    private Statement stat = null;
    // 執行,傳入之sql為完整字串
    private ResultSet rs = null;
    // 結果集
    private PreparedStatement pst = null;
    // 執行,傳入之sql為預儲之字申,需要傳入變數之位置
    // 先利用?來做標示

    private String dropdbSQL = "DROP TABLE User ";

    private String createdbSQL = "CREATE TABLE User (" + "    id     INTEGER "
            + "  , name    VARCHAR(20) " + "  , passwd  VARCHAR(20))";

    private String insertdbSQL = "insert into User(id,name,passwd) "
            + "select ifNULL(max(id),0)+1,?,? FROM User";

    private String selectSQL = "select * from User ";

    public Jdbcmysql() {

    }

    // 建立table的方式
    // 可以看看Statement的使用方式
    public void createTable() {
        try {
            stat = con.createStatement();
            stat.executeUpdate(createdbSQL);
        } catch (SQLException e) {
            System.out.println("CreateDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 新增資料
    // 可以看看PrepareStatement的使用方式
    public void insertTable(String name, String passwd) {
        try {
            pst = con.prepareStatement(insertdbSQL);

            pst.setString(1, name);
            pst.setString(2, passwd);
            pst.executeUpdate();
        } catch (SQLException e) {
            System.out.println("InsertDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 刪除Table,
    // 跟建立table很像
    public void dropTable() {
        try {
            stat = con.createStatement();
            stat.executeUpdate(dropdbSQL);
        } catch (SQLException e) {
            System.out.println("DropDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }

    // 查詢資料
    // 可以看看回傳結果集及取得資料方式
    public void SelectTable() {
        try {
            stat = con.createStatement();
            rs = stat.executeQuery(selectSQL);
            System.out.println("ID\t\tName\t\tPASSWORD");
            while (rs.next()) {
                System.out.println(rs.getInt("id") + "\t\t"
                        + rs.getString("name") + "\t\t"
                        + rs.getString("passwd"));
            }
        } catch (SQLException e) {
            System.out.println("DropDB Exception :" + e.toString());
        } finally {
            Close();
        }
    }
   
    public void SelectTable1() {
        try {

            // 註冊driver
            DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
            con = DriverManager.getConnection(
                            "jdbc:mysql://106.187.38.21:3306/ewallet","tintin","tintin");
       
            if(con!=null){
                stat = con.createStatement();
                rs = stat.executeQuery("SELECT * FROM transaction");
                System.out.println("ID source_id source_id type ");
                while (rs.next()) {
                    System.out.println(rs.getInt("id") + "\t\t"
                            + rs.getString("source_id") + "\t\t"
                            + rs.getString("type"));
                }
            }else{
                System.out.println("con=null");
               
            }
           
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   
    }

    // 完整使用完資料庫後,記得要關閉所有Object
    // 否則在等待Timeout時,可能會有Connection poor的狀況
    private void Close() {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stat != null) {
                stat.close();
                stat = null;
            }
            if (pst != null) {
                pst.close();
                pst = null;
            }
        } catch (SQLException e) {
            System.out.println("Close Exception :" + e.toString());
        }
    }

    /*
    public static void main(String[] args) {
        // 測看看是否正常
        Jdbcmysql test = new Jdbcmysql();
        test.dropTable();
        test.createTable();
        test.insertTable("yku", "12356");
        test.insertTable("yku2", "7890");
        test.SelectTable();

    }
    */
}

2014年8月13日 星期三

FilterDispatcher <<< is deprecated! Please use the new filters!

http://www.cnblogs.com/babybluevino/archive/2012/11/29/2794732.html

taglib

http://stackoverflow.com/questions/5987908/how-to-resolve-can-not-find-the-tag-library-descriptor-for-http-java-sun-co

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2014年8月12日 星期二

dialog

    <style name="logindialog" parent="@android:Theme.Dialog"><!--dialog-->

        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">false</item><!--半透明-->

        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>

    </style>



public OnClickListener OnTransactionClick = new OnClickListener() {

        @Override
        public void onClick(View v) {
           
            dialog = new Dialog(getActivity(), R.style.logindialog);
             dialog.setContentView(R.layout.logindialog);
           
             dialog.show();
 
           
        }
    };

class ImageDownloaderTask extends AsyncTask

package com.ewallet.citygo.utils;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;

public class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {
    private final WeakReference imageViewReference;
    String igstorepath;
    boolean isdownloaded=false;

    public ImageDownloaderTask(ImageView imageView,String igstorepath) {
        imageViewReference = new WeakReference(imageView);
        this.igstorepath=igstorepath;
    }

    private Bitmap downloadBitmap(String url) {
        File f = new File(igstorepath);
        if(f.exists() && !f.isDirectory()) { //Note that exists() will return true for directories, too
             isdownloaded=true;
            Log.d("ImageDownloaderTask 已存在:"+igstorepath,""+url);
            Bitmap bMap = BitmapFactory.decodeFile(igstorepath);
            return bMap;
         
        }else{
            isdownloaded=false;
            Log.d("ImageDownloaderTask 不存在 ",""+url);
            final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
            HttpGet getRequest = null;
            if(url!=null){
                   getRequest = new HttpGet(url);
            }else{
                Log.d("ImageDownloaderTask ","getRequest = new HttpGet(url)  null");
            }
        
            try {
                HttpResponse response = client.execute(getRequest);
                final int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode != HttpStatus.SC_OK) {
                    Log.w("ImageDownloader", "Error " + statusCode
                            + " while retrieving bitmap from " + url);
                    return null;
                }

                final HttpEntity entity = response.getEntity();
                if (entity != null) {
                    InputStream inputStream = null;
                    try {
                        inputStream = entity.getContent();
                        final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                      
                        return bitmap;
                    } finally {
                        if (inputStream != null) {
                            inputStream.close();
                        }
                        entity.consumeContent();
                    }
                }
            } catch (Exception e) {
                // Could provide a more explicit error message for IOException or
                // IllegalStateException
                getRequest.abort();
                Log.w("ImageDownloader", "Error while retrieving bitmap from " + url);
            } finally {
                if (client != null) {
                    client.close();
                }
            }
            return null;
          
      
        }
      
      
      

    }

    @Override
    // Actual download method, run in the task thread
    protected Bitmap doInBackground(String... params) {
        // params comes from the execute() call: params[0] is the url.
        return downloadBitmap(params[0]);
    }

    @Override
    // Once the image is downloaded, associates it to the imageView
    protected void onPostExecute(Bitmap bitmap) {
        if (isCancelled()) {
            bitmap = null;
        }
 

        if (imageViewReference != null) {
            ImageView imageView = (ImageView) imageViewReference.get();
            if (imageView != null) {

                if (bitmap != null) {
                    imageView.setImageBitmap(bitmap);
                  
                    if(isdownloaded){
                        //如果下載過的就不存
                      
                    }else{
                        File _file = new File(igstorepath);
                        OutputStream _outStream;
                        try {
                            _outStream = new FileOutputStream(_file);
                            bitmap.compress(Bitmap.CompressFormat.PNG, 90, _outStream);
                            try {
                                _outStream.flush();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            try {
                                _outStream.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                  

                } else {
                    //imageView.setImageDrawable(imageView.getContext().getResources().getDrawable(R.drawable.basketball));
                }
            }

        }
    }

}

ECLIPSE:pull下最新版方法


選擇你所要PULL的版本 這裡選ORIGIN的MASTER

記得勾選 和選擇NONE  

到這邊可以拿下最新版

CHECK一次

那如果要MERGE呢?
建議先切換到自己的 在MERGE載下來的
如圖已經切換了


如果出現FAIL代表你沒有COMMIT之前的



2014年8月8日 星期五

萬用Adapter

兩隻CLASS CouponsAdapter 和CouponsDetailActivity
//實作在NEW這個adapter上CouponsDetailActivity的
CouponsAdapter .init(new ListAdapterCallbacks() {

/*
 *
 */
// TODO: Auto-generated Javadoc
/**
 * The Class CouponsAdapter.
 */
public class CouponsAdapter extends BaseAdapter {

    /** The inflater. */
    private static LayoutInflater inflater = null;

    /** The m context. */
    private Context mContext;

    /** The m callback. */
    private ListAdapterCallbacks mCallback;

    /** The m j array. */
    private JSONArray mJArray;

    private String mName;

    private String mDisplayImage;
    ArrayList<CouponsWrapper> couponsTicketAryList=null;//MemberFragment

    /**
     * Instantiates a new coupons adapter.
     *
     * @param context
     *            the context
     * @param jArray
     *            the j array
     */
    public CouponsAdapter(Context context, JSONArray jArray) {
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mContext = context;
        mJArray = jArray;

    }

    public CouponsAdapter(Context context) {
        mContext = context;
    }
   
    public CouponsAdapter(Context context,ArrayList<CouponsWrapper> couponsTicketAryList) {//MemberFragment 目前無作用
        mContext = context;
        this.couponsTicketAryList=couponsTicketAryList;
        Log.d("TAG CouponsAdapter() ","couponsTicketAryList");
    }

    public void setArray(JSONArray jArray) {
        this.mJArray = jArray;

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                String imageUrl = JsonUtils.URL + mDisplayImage;
                new DownloadFileFromURL().execute(imageUrl, mName);

            }
        });
        thread.start();

    }

    /*
     * (non-Javadoc)
     *
     * @see android.widget.Adapter#getCount()
     */
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        if (mJArray != null) {
            return mJArray.length();
        } else {
            return 0;
        }

    }

    /*
     * (non-Javadoc)
     *
     * @see android.widget.Adapter#getItem(int)
     */
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    /*
     * (non-Javadoc)
     *
     * @see android.widget.Adapter#getItemId(int)
     */
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    /**
     * The Class ViewHolder.
     */
    public static class ViewHolder {

        /** The nearby icon. */
        public ImageView nearbyIcon;

        /** The nearby title. */
        public TextView nearbyTitle;
       
    }
    ViewHolder holder;
    /*
     * (non-Javadoc)
     *
     * @see android.widget.Adapter#getView(int, android.view.View,
     * android.view.ViewGroup)
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View vi = convertView;
        if (convertView == null) {
            //Log.d("TAG getView","mFavoriteCouponsAdapter");//MemberFragment
            vi = inflater.inflate(R.layout.couponsadapter, null);
            holder = new ViewHolder();
            holder.nearbyIcon = (ImageView) vi.findViewById(R.id.icon);
            holder.nearbyTitle = (TextView) vi.findViewById(R.id.textView1);

            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }
       
        if(couponsTicketAryList==null){
            //Log.d("TAG getView if","couponsTicketAryList==null");
            setCouponsAdapter(position);
           
           
        }else{
           
        CouponsWrapper favoriteWrapper = couponsTicketAryList.get(position);
        Log.d("TAG getView else",favoriteWrapper.TITLE);//MemberFragment
            holder.nearbyTitle.setText(favoriteWrapper.TITLE);
           
            holder.nearbyIcon.setImageBitmap(Utils.openBinImg(favoriteWrapper.NAME));
            Log.d("TAG getView else",favoriteWrapper.NAME);//MemberFragment
            //顯示廣告
        }



        vi.setOnClickListener(new OnItemClickListener(position));

        return vi;
    }
    public void setCouponsAdapter(int position){
        try {

            JSONObject json_data = mJArray.getJSONObject(position);
            String title = json_data.getString("title");
            JSONObject productProvider = json_data
                    .getJSONObject("productProvider");
            JSONObject displayImage = productProvider
                    .getJSONObject("displayImage");
            mDisplayImage = displayImage.getString("downloadUrl");
            mName = displayImage.getString("fileName");
            String name = productProvider.getString("name");
            String startDate = json_data.getString("startDate");
            String endDate = json_data.getString("endDate");
            holder.nearbyTitle.setText(title);
            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    String imageUrl = JsonUtils.URL + mDisplayImage;
                    new DownloadFileFromURL().execute(mDisplayImage, mName);

                }
            });
            thread.start();

            holder.nearbyIcon.setImageDrawable(Drawable
                    .createFromPath(Environment.getExternalStorageDirectory()
                            .toString() + "/" + mName));

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * The listener interface for receiving onItemClick events. The class that
     * is interested in processing a onItemClick event implements this
     * interface, and the object created with that class is registered with a
     * component using the component's
     * <code>addOnItemClickListener<code> method. When
     * the onItemClick event occurs, that object's appropriate
     * method is invoked.
     *
     * @see OnItemClickEvent
     */
    private class OnItemClickListener implements OnClickListener {

        /** The m position. */
        private int mPosition;

        /**
         * Instantiates a new on item click listener.
         *
         * @param position
         *            the position
         */
        OnItemClickListener(int position) {
            mPosition = position;
        }

        /*
         * (non-Javadoc)
         *
         * @see android.view.View.OnClickListener#onClick(android.view.View)
         */
        @Override
        public void onClick(View v) {

            //Log.d("class CouponsAdapter mPosition:", "" + mPosition);

            mCallback.launchDetailPage(mPosition);
        }
    }

    /**
     * The Interface ListAdapterCallbacks.
     */
    public static interface ListAdapterCallbacks {

        /**
         * Launch detail page.
         *
         * @param mPosition
         *            the m position
         */
        void launchDetailPage(int mPosition);
    }

    /**
     * Inits the.
     *
     * @param listAdapterCallbacks
     *            the list adapter callbacks
     */
    public void init(ListAdapterCallbacks listAdapterCallbacks) {
        mCallback = listAdapterCallbacks;
    }


}

然後再CouponsFragment再implement
couponsAdapter = new CouponsAdapter(mContext,jArray);
                mListView.setAdapter(couponsAdapter);
                couponsAdapter.init(new ListAdapterCallbacks() {

                    @Override
                    public void launchDetailPage(int position) {
                        Intent intent = new Intent();
                        Bundle bundle = new Bundle();
                        bundle.putString("JSONARRAY",jArray.toString());
                        bundle.putInt("POSITION", position);
                        intent.putExtras(bundle);
                        intent.setClass(getActivity(), CouponsDetailActivity.class);
                        startActivity(intent);
                    }
                });