軟體印象

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

          2011年5月6日

           

          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) | 評論 (0)編輯 收藏

          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) | 評論 (0)編輯 收藏

          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) | 評論 (0)編輯 收藏

          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) | 評論 (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);

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

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

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

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

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

              
          //遞增步長,默認加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);
                 
                  
          //得到流水號,是自己寫的工具類生成的.形式為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;
              }

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

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

                  
          //如果沒有找到就從數(shù)據(jù)庫中讀出最大值并進行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)造存儲在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) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 临邑县| 商南县| 金华市| 文昌市| 咸阳市| 丹江口市| 无锡市| 仁布县| 广宗县| 定南县| 永德县| 建平县| 万载县| 祁门县| 富顺县| 临湘市| 靖边县| 渝北区| 陆丰市| 平顶山市| 焦作市| 阳泉市| 巴林左旗| 高台县| 城口县| 阜平县| 旬邑县| 乾安县| 县级市| 唐河县| 屏东市| 沅陵县| 刚察县| 资溪县| 平昌县| 乌鲁木齐县| 衡阳县| 城口县| 永兴县| 湄潭县| 正安县|