躺在沙灘上的小豬

          快樂的每一天

          #

          Domain Object 思考(二)

          我們可以讓Domain Object更rich:)

           1package com.martin.pdo;
           2
           3import java.io.Serializable;
           4import java.util.List;
           5
           6/**
           7 * @author martin.xus
           8 * @hibernate.class table="t_user"
           9 * @spring.bean name="user"
          10 * @spring.property name="manager" ref="userManager"
          11 */

          12public class User implements Serializable {
          13
          14    /**
          15     * @hibernate.id generator-class="uuid.hex"
          16     * length="32"
          17     * column="user_id"
          18     */

          19    private String id;
          20
          21    /**
          22     * @hibernate.property column="user_name"
          23     * length="80"
          24     */

          25    private String name;
          26
          27    /**
          28     * @hibernate.property
          29     */

          30    private char sex;
          31
          32    /**
          33     * @hibernate.property
          34     */

          35    private int age;
          36
          37    //省略了getter & setter
          38    private UserManager manager = null;
          39
          40    /**
          41     * @return Returns the manager.
          42     */

          43    public UserManager getManager() {
          44        return manager;
          45    }

          46
          47    /**
          48     * @param manager The manager to set.
          49     */

          50    public void setManager(UserManager manager) {
          51        this.manager = manager;
          52    }

          53
          54    /**
          55     * @param user
          56     */

          57    public void add(User user) {
          58        this.getManager().add(user);
          59    }

          60
          61    public List loadByName(String name) {
          62        return this.getManager().loadByName(name);
          63    }

          64
          65    public void remove(User user) {
          66        this.getManager().remove(user);
          67    }

          68}

          69


          測試代碼,我們可以這樣來寫

           1ApplicationContext context = JUnitTestHelper.getContext();
           2        User user = (User) context.getBean("user");
           3
           4        User _u1 = new User();
           5        _u1.setName("martin xus");
           6        _u1.setSex('F');
           7        _u1.setAge(100);
           8
           9        user.add(_u1);
          10
          11        Assert.assertEquals(((User) user.loadByName("martin xus").get(0)).getId(), _u1.getId());
          12

          posted @ 2005-09-22 14:46 martin xus| 編輯 收藏

          Domain Object 的思考(一)

               摘要: 我們建一個簡單的表如下: +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | varcha...  閱讀全文

          posted @ 2005-09-22 13:31 martin xus| 編輯 收藏

          [討論] Persistent Domain Objects Pattern

          http://www.theserverside.com/patterns/thread.tss?thread_id=33387

          posted @ 2005-09-22 10:05 martin xus| 編輯 收藏

          對象的存儲&讀取

          python中提供一個pickle 標準類 來 存儲/讀取 任意的對象。
          如下:

          import pickle as p
          
          class PickleTest:
          
              def __init__(self,o,filename):
                  if not 0:
                      self.obj=o
                      self.filename=filename
          
              def dump(self):
                  print 'save data ',self.obj,' >> ',self.filename
                  f = file(filename,'w')
                  p.dump(self.obj,f)
          
              def load(self):
                  f = file(self.filename)
                  s = p.load(f)
                  print 'load data from ',self.filename,' >>',s
                  return s
          if __name__=='__main__':
              filename = 'test.data'
              obj = {'p1':[0,1,2,3],'p2':(1,2,3),'p3':{'1':1,'2':2},'p4':'str'}
              test = PickleTest(obj,filename)
              test.dump()
              test.load()

          同時也提供另外一個類cPickle,是c寫的,速度當然會快很多。
          只需將如下

          import pickle as p

          換成

          import cPickle as p

          即可

          posted @ 2005-09-21 16:26 martin xus| 編輯 收藏

          python and Template.

          也許說法不正確,但是目前我能理解的就是替換,替換指定文本中的內容。
          例如:

          <a name="$code$"></a>
          <div class="infomark">$title$</div>
          <div class="info" style="background:#F4F4F4">
          <pre>
              $content$
          </pre>   
          </div>
          <div align="right" class="right"><a href="#000">Top</a></div>
          <br>
          <br>

          我要做的只是替換其中特定格式的 $code$,$title$,$conent$,而已。

          那么我們用re可以輕松搞定(當然更復雜的template需要更深入的去學習...)。
          --------------

          import re 
          import sys 
          
          class Template: 
              """ 
                  簡單的模板,用于替換指定文本的特殊字符 
             例如:$code$ 
              """ 
              def __init__(self,filename,params,prefix='$',suffix='$'): 
                  if not filename: 
                      print 'Error:' 
                      sys.exit(-1) 
                  else: 
                      self.filename=filename            
                  self.text=''    
                  self.params=params 
                  self.prefix=prefix 
                  self.suffix=suffix 
          
              def getKeys(self): 
                  """ 
                      返回所有的要求替換匹配的表達式 
                  """ 
                  return params.keys() 
          
              def parse(self): 
                  
                  self.getContent() 
                    
                  keys = self.params.keys() 
                  for key in keys: 
                      value = self.params[key] 
                      self.__replace(key,value) 
                  return self.text 
          
              
              def getContent(self): 
                  """ 
                      讀取文件的內容 
                  """ 
                  f = open(self.filename) 
                  lines = f.readlines() 
                  self.text = ''.join(line for line in lines) 
                  
              def __replace(self,key,value):        
                  #m = re.match(prefix+key+suffix,text) 
                  pattern = '\.*\\'+self.prefix+key+'\\'+self.suffix+'\.*' 
                  self.text = re.sub(pattern,value,self.text) 
          
          if __name__=='__main__': 
              filename = 'D:\\workspace\\style\\test\\template.xt' 
              params = {'code':'001001','title':'測試','content':'的嘎公司今后;飛機庫'} 
              t = Template(filename,params) 
              print t.parse()

          ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------

          這樣,我們的python代碼可以更簡單點了

          我們將以前的代碼做修改,如下:

          import cx_Oracle 
          from Template import * 
          
          def parse(): 
              '''generate the content html''' 
          
              sql = '''select t.bz_code code, t.bz_title title, t.bz_content content 
                  from bz_czzs t 
                  order by t.bz_code''' 
          
              connection = cx_Oracle.connect( 'etasadmin/etasadmin@zhongju' ) 
              cursor = connection.cursor() 
              cursor.execute(sql) 
              item=cursor.fetchone() 
              i=1; 
              print 'begin' 
              while item: 
                  i+=1 
                  print 'parsing ',i,' item....' 
                  writeContent(item[0],item[1],str(item[2])) 
                  item=cursor.fetchone() 
          
          def writeContent(code,title,content): 
              filedir='D:\\m\\content\\' 
              
              params = {'code':code,'title':title,'content':content} 
              t = Template('D:\\workspace\\style\\test\\template.xt',params) 
              s = t.parse() 
          
              out = open(filedir+code+".html",'w') 
              out.write(s) 
              out.flush() 
              out.close() 
              
          if __name__=='__main__': 
              print 'parse..................'    
              parse() 
              print 'end'

          參考文檔:
          http://docs.python.org/lib/module-re.html

          關于template的進一步思考:
          一:不用那么復雜的制定文件全名:
          'D:\\workspace\\style\\test
          template.xt'
          代碼實現從當前的classpath中自動尋找該文件,并且制定文件后綴名。
          那么就變的如下簡單了。

          t = Template('template',params)

          posted @ 2005-09-20 18:53 martin xus| 編輯 收藏

          僅列出標題
          共28頁: First 上一頁 20 21 22 23 24 25 26 27 28 下一頁 
          主站蜘蛛池模板: 闽侯县| 廉江市| 临潭县| 安化县| 大同市| 龙泉市| 三门县| 伊春市| 清水河县| 罗城| 大渡口区| 通州市| 秀山| 文登市| 通许县| 安溪县| 太仆寺旗| 武威市| 原平市| 桃源县| 若尔盖县| 嘉定区| 湘潭县| 满城县| 石楼县| 上林县| 措勤县| 中超| 海阳市| 黄冈市| 桑日县| 钦州市| 新龙县| 沙坪坝区| 平顶山市| 连平县| 安仁县| 五河县| 万荣县| 合江县| 义乌市|