軟體印象

          Kavin
          posts - 13, comments - 0, trackbacks - 0, articles - 0

          2013年2月4日

           

          DECLARE
            v_test_varray VARCHAR_VARRAY_TYPE := VARCHAR_VARRAY_TYPE('57610',
                                                                     '61368',
                                                                     '73111',
                                                                     '37208',
                                                                     '57639');
                                                                     
          V_SQL        VARCHAR2(32767);
              V_SQL_IN     VARCHAR2(32767);
              V_SQL_ROWNUM VARCHAR2(32767);
              V_ORDER      VARCHAR2(32767);
              TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
              v_evt_id_list  NUMBER_INDEX_BY_STRING;
              
          Begin
            --orderArray VARCHAR_VARRAY_TYPE%type := VARCHAR_VARRAY_TYPE('11','22','33','44','55');

          /*  
            FOR i IN v_test_varray.FIRST .. v_test_varray.LAST LOOP
              IF v_test_varray.EXISTS(i) THEN
                DBMS_OUTPUT.put_line(i);
              END IF;
            END LOOP;
            
          */
            
            V_ORDER := Func_LIST_TO_ORDER(v_test_varray, 'A.COL_NAME');
            DBMS_OUTPUT.put_line('V_ORDER='||V_ORDER);
            
            V_SQL := 'SELECT * FROM TABLEA A'
                     || ' WHERE '
                     || ''
                     || ''
                     || ''
                     || ''
                     ;
            V_SQL := V_SQL || ' ( ' ||
                         FUNC_LIST_TO_IN_SQL(v_test_varray,
                                              'COL_NAME',
                                              ''''|| ')';
              V_SQL := V_SQL  ||
                       ' ORDER by ( ' || V_ORDER || ')';
                       
            DBMS_OUTPUT.put_line('V_SQL='||V_SQL);

          --- SET v_evt_id_list number_index_by_string

          FOR i IN v_test_varray.FIRST .. v_test_varray.LAST
            LOOP
               IF v_test_varray.EXISTS (i)
               THEN
                  DBMS_OUTPUT.put_line (i);
                  v_evt_id_list(v_test_varray(i)) := i;
               END IF;
            END LOOP;
            
          --- TEST v_evt_id_list number_index_by_string
            FOR i IN v_evt_id_list.FIRST .. v_evt_id_list.LAST
            LOOP
               IF v_evt_id_list.EXISTS (i)
               THEN
                  DBMS_OUTPUT.put_line (i||' = '||v_evt_id_list(i) );
               END IF;
            END LOOP;
            
          -- GET v_evt_id_list number_index_by_string
            DBMS_OUTPUT.put_line (v_evt_id_list('73111') );

          posted @ 2013-02-04 16:47 Kavin 閱讀(243) | 評(píng)論 (0)編輯 收藏

          2012年6月7日

          1. config servlet in web.xml
           <servlet>
               <servlet-name>addressData</servlet-name>
               <servlet-class>com.xxx.webapp.AddressDataAutoCompleteServlet</servlet-class>
               <load-on-startup>1</load-on-startup>
              </servlet>
             
          2. set autocomplete in JSP
          $().ready(function() {
           
           $("#addressLine1").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine");
           $("#addressLine2").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine2");
           $("#addressLine3").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine3");
           $("#addressCity").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressCity");
           $("#addressPostCode").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressPostCode");
           $("#firstFocusObj").focus();
          });

          <html:text name="" tabindex="9" style="color: grey;" onclick="clearAddressValue(this)" styleId="addressLine1" value='<%=request.getAttribute("postalAddress1") == null ? defalutAddressValue : (String)request.getAttribute("postalAddress1")%>' property="TLContactDetailForm.postalAddress1" size="50" maxlength="50" styleClass="inputText2"></html:text>

          <input type="text" name="TLContactDetailForm.postalAddress1" maxlength="50" size="50" tabindex="9" value="Start typing your address and we will finish it for you" onclick="clearAddressValue(this)" id="addressLine1" style="color: grey;" class="inputText2">

          3. return addresses in java class: AddressDataAutoCompleteServlet.java

           

          package com.xxxxxx.webapp;

          import com.xxxxxx.exception.ServiceException;
          import com.xxxxxx.util.StrUtils;
          import com.xxxxxx.webapp.context.ServiceLocator;
          import com.xxxxxx.util.AddressShow;

          import java.io.IOException;
          import java.io.PrintWriter;

          import java.util.ArrayList;
          import java.util.List;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.log4j.Logger;


          /**
           * Servlet implementation class AddressDataAutoCompleteServlet
           */
          public class AddressDataAutoCompleteServlet extends HttpServlet {
              private static final long serialVersionUID = 1L;
              public Logger LOG = Logger.getLogger(this.getClass().getName());

              /**
               * @see HttpServlet#HttpServlet()
               */
              public AddressDataAutoCompleteServlet() {
                  super();
              }
             
              /**
               * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
               *      response)
               */
              protected void doGet(HttpServletRequest request,
                  HttpServletResponse response) throws ServletException, IOException {
                  String paramName = request.getParameter("paramName");
                  String paramValue = request.getParameter("q");
                  LOG.info(paramName);
                  LOG.info(paramValue);

                  List list = new ArrayList();

                  try {
                      list = ServiceLocator.getAddressService()
                                           .searchAddressList(paramName, paramValue);
                  } catch (ServiceException e) {
                   LOG.error(e.getMessage(),e);
                  }

                  PrintWriter t_PW = response.getWriter();
                 
                  for (int i = 0; i < list.size(); i++) {
                      String address = StrUtils.toTitleCase((String) list.get(i));

                      if (paramName.equals("addressLine")) {
                       AddressShow.showAddress(t_PW,address);
                      } else if (paramName.equals("addressLine1")) {
                       AddressShow.showAddress(t_PW,address);
                      } else if (paramName.equals("addressLine2")) {
                       AddressShow.showAddress(t_PW,address);
                      } else if (paramName.equals("addressLine3")) {
                       AddressShow.showAddress(t_PW,address);
                      } else if (paramName.equals("addressCity")) {
                       AddressShow.showAddress(t_PW,address);
                      } else if (paramName.equals("addressPostCode")) {
                       AddressShow.showAddress(t_PW,address);
                      }
                  }
              }

              /**
               * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
               *      response)
               */
              protected void doPost(HttpServletRequest request,
                  HttpServletResponse response) throws ServletException, IOException {
                  this.doGet(request, response);
              }
          }

           

           


          ------
          AddressShow.java

          package com.intl.cigna.util;

          import java.io.PrintWriter;

          public class AddressShow
          {
            public static void showAddress(PrintWriter pw, String input)
            {
              pw.write(input + "\n");

            }
          }

          posted @ 2012-06-07 22:39 Kavin 閱讀(308) | 評(píng)論 (0)編輯 收藏

          2011年6月9日

          Unauthorized access to users data via Browser’s Cach

          Solution:


          1 <%  response.setHeader("Pragma""no-cache"); 
          2                 response.setHeader("Cache-Control""no-store"); 
          3                 response.setHeader("Expires""0"); 
          4                 response.setDateHeader("Expires"-1); 
          5 %>
          6 

          posted @ 2011-06-09 17:53 Kavin 閱讀(252) | 評(píng)論 (0)編輯 收藏

          2011年5月6日

          SSH2中,直接獲取SEQUENCE的NEXTVAL

          使用Spring的 類 org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer

          Spring配置文件:
           1     <bean id="userDao" class="com.xx.dao.impl.UserDAOImpl">
           2         <property name="sessionFactory" ref="sessionFactory" />
           3         <property name="seqGenerator" ref="seqDispGenerator"></property>
           5     </bean>
           6     
           7     <bean id="seqDispGenerator" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">
           8         <property name="dataSource" ref="dataSource"></property>
           9         <property name="incrementerName" ><value>SEQ_DISP_ID</value></property>
          10     </bean>



          UserDAOImpl.java中引用:
          private OracleSequenceMaxValueIncrementer seqGenerator;
              
              

              
          /**
               * 
          @return the seqGenerator
               
          */
              
          public OracleSequenceMaxValueIncrementer getSeqGenerator() {
                  
          return seqGenerator;
              }

              
          /**
               * 
          @param seqGenerator the seqGenerator to set
               
          */
              
          public void setSeqGenerator(OracleSequenceMaxValueIncrementer seqGenerator) {
                  
          this.seqGenerator = seqGenerator;
              }

          UserDAOImpl.java中調(diào)用:
          1 System.out.println("---------------------- this.seqGenerator().nextIntValue="+this.seqGenerator.nextIntValue());


          posted @ 2011-05-06 14:24 Kavin 閱讀(2700) | 評(píng)論 (0)編輯 收藏

          Hibernate ID generator 自定義主鍵生成器

          /**
           * 
           
          */
          package com.ge.hc.eapp.generator;


          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;

          import org.hibernate.HibernateException;
          import org.hibernate.MappingException;

          import org.hibernate.dialect.Dialect;

          import org.hibernate.engine.SessionImplementor;

          import org.hibernate.id.Configurable;
          import org.hibernate.id.IdentifierGenerator;
          import org.hibernate.id.PersistentIdentifierGenerator;

          import org.hibernate.type.Type;

          import java.io.Serializable;

          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;

          import java.util.Date;
          import java.util.HashMap;
          import java.util.Map;
          import java.util.Properties;
          import java.util.Properties;

          /**
           * 
          @author Kavin
           *
           
          */
          public class DispNoGenerator implements IdentifierGenerator, Configurable {
              
          private static final Log log = LogFactory.getLog(DispNoGenerator.class);

              
          //存儲(chǔ)最大值的數(shù)組的容量
              private static final int MAX_CAPACITY = 2000;

              
          /* 同步鎖 */
              
          private static final Object lock = new Object();

              
          //存儲(chǔ)表存儲(chǔ)在數(shù)組中的索引值
              private static Map map = new HashMap();

              
          //最大值數(shù)組
              private static long[] seqs = new long[MAX_CAPACITY];

              
          //最大值數(shù)組已經(jīng)使用的容量
              private static int lastIndex;

              
          //遞增步長(zhǎng),默認(rèn)加1
              private int step = 1;
              
          private String key;
              
          private String sql;
              
          private Connection connection;
              
          private Class returnClass;

              
          public Serializable generate(SessionImplementor session, Object object)
                  
          throws HibernateException {
                  
          // TODO Auto-generated method stub
                  connection = session.connection();

          //        long seq = -1;

                  
          //找到索引值
          //        int index = findIndex();

          //        //把最大值加1
          //        seqs[index] = seqs[index] + step;
          //
          //        seq = seqs[index];
                  
                  String strGenerateId 
          = null;
                  System.out.println(
          "this.sql="+this.sql);
                  
          try {
                      
          long t_SeqNo = this.getSeqValue();
                  
                  System.out.println(
          "t_SeqNo="+t_SeqNo);
                 
                  
          //得到流水號(hào),是自己寫的工具類生成的.形式為000x
                  String seqStr = String.valueOf(t_SeqNo);
                  
          //JspFormate.currentFormateORM(seq);
                  
          //得到y(tǒng)ymmdd,是自己寫的方法工具類生成的yymmdd
                  String preDate = "20110506";
                  
          //得到hhmmss,是自己寫的工具類獲取的hhmmss
                  
          //String preHour = JspFormate.dateFormateOnlyHHMMSSORM(new Date());
                  String preHour = "1035";
                  strGenerateId 
          = preDate + preHour + seqStr;
                  } 
          catch (SQLException e) {
                      log.error(e);
                      e.printStackTrace();
                  }

                  
          return strGenerateId;
              }

              
          /**
               * 找到表中自動(dòng)增長(zhǎng)字段存儲(chǔ)在數(shù)組中的索引值
               * 
          @return 索引值
               
          */
              
          private int findIndex() {
                  
          int index = 0;

                  
          //首先中緩存中取出索引值
                  Integer integer = (Integer) map.get(key);

                  
          //如果沒有找到就從數(shù)據(jù)庫中讀出最大值并進(jìn)行cache
                  if (null == integer) {
                      
          //double check lock
                      synchronized (lock) {
                          integer 
          = (Integer) map.get(key);

                          
          if (null == integer) {
                              
          long maxvalue = 1;

                              
          try {
                                  maxvalue 
          = this.getSeqValue();
                              } 
          catch (SQLException e) {
                                  log.error(e);
                              }
                              maxvalue 
          = new Long(0).longValue();

                              integer 
          = new Integer(lastIndex++);
                              seqs[integer.intValue()] 
          = maxvalue;
                              map.put(key, integer);
                          }
                      }
                  }

                  index 
          = integer.intValue();

                  
          return index;
              }

              
          public void configure(Type type, Properties params, Dialect d)
                  
          throws MappingException {
                  
          //     取出table參數(shù)
                  String table = params.getProperty("table");

                  
          if (table == null) {
                      table 
          = params.getProperty(PersistentIdentifierGenerator.TABLE);
                  }

                  
          //取出column參數(shù)
                  String column = params.getProperty("column");

                  
          if (column == null) {
                      column 
          = params.getProperty(PersistentIdentifierGenerator.PK);
                  }

                  
          //表的sehcma參數(shù)
                  String schema = params.getProperty(PersistentIdentifierGenerator.SCHEMA);

                  returnClass 
          = type.getReturnedClass();

                  
          //取出step參數(shù)
                  String stepvalue = params.getProperty("step");

                  
          if ((null != stepvalue) && !"".equals(stepvalue.trim())) {
                      
          try {
                          step 
          = Integer.parseInt(stepvalue);
                      } 
          catch (Exception e) {
                          log.error(e);
                      }
                  }

                  
          //構(gòu)造存儲(chǔ)在Map中的索引值的key name
                  key = table + "_$_" + column;

                  
          //根據(jù)參數(shù)構(gòu)造取最大值的SQL
                  sql = "select SEQ_COMPANY_ID.nextval from dual";

                  
              }

              
          /**
               * 取指定SEQUENCE的值,不存在記錄返回0
               * 
          @return Sequence最大值
               * 
          @throws SQLException if sql error occurs.
               
          */
              
          private long getSeqValue() throws SQLException {
                  
          long maxvalue = 0;

                  PreparedStatement st 
          = connection.prepareStatement(sql);
                  System.out.println(
          "============================================" + sql);
                  ResultSet rs 
          = null;

                  
          try {
                      rs 
          = st.executeQuery();

                      
          if (rs.next()) {
                          maxvalue 
          = rs.getLong(1);
                      }

                      sql 
          = null;
                  } 
          finally {
                      
          if (rs != null) {
                          rs.close();
                      }

                      st.close();
                  }

                  
          return maxvalue;
              }
              
              
          /**
               * 取指定表中id字段的最大值,不存在記錄返回0
               * 
          @return 最大值
               * 
          @throws SQLException if sql error occurs.
               
          */
              
          private long getMaxvalue() throws SQLException {
                  
          long maxvalue = 0;

                  PreparedStatement st 
          = connection.prepareStatement(sql);
                  System.out.println(
          "============================================" + sql);
                  ResultSet rs 
          = null;

                  
          try {
                      rs 
          = st.executeQuery();

                      
          if (rs.next()) {
                          maxvalue 
          = rs.getLong(1);
                      }

                      sql 
          = null;
                  } 
          finally {
                      
          if (rs != null) {
                          rs.close();
                      }

                      st.close();
                  }

                  
          return maxvalue;
              }
          }

          Hibernate 配置文件

          <id name="userId" type="java.lang.String">
                      
          <column name="USER_ID" />
                      
          <generator class="com.xx.generator.DispNoGenerator" />
                  
          </id>


          posted @ 2011-05-06 13:42 Kavin 閱讀(2141) | 評(píng)論 (0)編輯 收藏

          2011年5月5日

               摘要: Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE ...  閱讀全文

          posted @ 2011-05-05 12:33 Kavin 閱讀(2383) | 評(píng)論 (0)編輯 收藏

          2011年4月19日

           

          Description:.

          To bring up System Properties:

          1.       Click Start and then Control Panel. From the Control Panel, double click System.

          2.        Another way to bring up this box is to right click the My Computer on your desktop. From the menu, select Properties.

          Solution:

          1.       參考http://www.passcape.com/windows_run_commands

          除了這兩種方式外,還有一種直接運(yùn)行system32下面的命令文件方式

          運(yùn)行C:"WINDOWS"system32 下面的sysdm.cpl。

          posted @ 2011-04-19 11:40 Kavin 閱讀(265) | 評(píng)論 (0)編輯 收藏

          2011年4月18日

           

          Description: @Override該標(biāo)記是為了增強(qiáng)程序在編譯時(shí)候的檢查,JDK1.5下,如果該方法并不是一個(gè)覆蓋父類的方法,在編譯時(shí)編譯器就會(huì)報(bào)告錯(cuò)誤。

          Analisys:

           

           1public class A {
           2 public void method(int i) {
           3 }

           4}

           5
           6public class B extends A {
           7 @Override
           8 public void method(int i) {
           9 }

          10
          11//如果如下定義,就會(huì)在編譯時(shí)出現(xiàn)一個(gè)錯(cuò)誤,因?yàn)椴皇歉采w父類的方法
          12@Override
          13 public void method(int i, String p_Str) {
          14 }

          15
          16}

          17


          JDK1.6正常,支持對(duì)接口的實(shí)現(xiàn)的@Override

           1public interface iA {
           2
           3 public void method(int i) {
           4
           5 }

           6
           7}

           8
           9public class B implements iA {
          10
          11 //JDK1.5下會(huì)報(bào)錯(cuò),JDK1.6下可以
          12
          13 @Override
          14
          15 public void method(int i, int j) {
          16
          17 }

          18
          19}

          20

          posted @ 2011-04-18 17:32 Kavin 閱讀(819) | 評(píng)論 (0)編輯 收藏

          2011年4月15日

           

          Description:
          Incompatible JVM- Version 1.4.2_03 of the JVM is not suitable for th is product. Version:1.5 or greater is required.



          Analisys:

          安裝Oracle Client 9/10, Path 被設(shè)置為Oracle自帶的JDK 1.4, 啟動(dòng)高版本Eclipse(eclipse-jee-helios-SR1-win32.exe)時(shí), 就默認(rèn)用Oracle自帶的JDK 1.4,這樣就會(huì)有問題。

          Solution:

          多種解決方案

          1.       修改環(huán)境變量: Path = %JAVA_HOME%"bin;%PATH% 
          權(quán)限的問題,我沒有選擇這個(gè)解決方案。

          2.       修改Eclipse啟動(dòng)項(xiàng):修改Eclipse快捷方式的屬性里面的目標(biāo): 
          D:"tool"eclipse-jee-helios-SR1-win32"eclipse"eclipse.exe -vm "C:"Program Files"Java"jdk1.5.0_05"bin"javaw.exe"

          posted @ 2011-04-15 09:53 Kavin 閱讀(471) | 評(píng)論 (0)編輯 收藏

          2011年4月7日

           

          代碼:
          Class XX implements InterfaceYY{
              @override
              function funcXX(){
              }
          }

          Eclipse報(bào)錯(cuò):   must override a superclass implements

          Analisys:
          1. @override 可以針對(duì) Interface; 不過最好用另外一個(gè)annotation: @implement
          2. java5 java6 支持泛型
          3. eclipse 里面的compile版本是JDK 5

          Solution:
          eclipse 里面的compile版本是JDK 5 -> 改成 JDK6

          posted @ 2011-04-07 14:30 Kavin 閱讀(728) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 砀山县| 炉霍县| 台中市| 运城市| 财经| 玛多县| 苏尼特左旗| 桂东县| 应用必备| 平果县| 集贤县| 台山市| 丹棱县| 永昌县| 镇宁| 花莲市| 集贤县| 平顺县| 正镶白旗| 长治市| 双柏县| 仙居县| 延吉市| 湖口县| 孟村| 余江县| 澄城县| 仙游县| 馆陶县| 开平市| 徐水县| 邓州市| 晋州市| 桓台县| 黄平县| 杂多县| 会宁县| 嫩江县| 竹溪县| 岗巴县| 莫力|