




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 60 / 60标本库管理系统是由java编写的一套软件系统,它由两部分组成:1、 web部分,客户端是ie6.0浏览器2、 RCP部分,用于集中管理标本库一下是Web部分的相关代码及配置文件说明:Web部分基于SHH技术(Struts、Spring、Hibernate),并且遵循MVC设计模式,所以相应的代码也清晰地分成java简单原始类、数据库操作类(DAO层)、业务逻辑类(business),整个web系统有很多部分组成,包括20个包以及相关配置文件、jsp页面、javascript脚本等等。下面是代码展示:样本类型枚举类:package org.scbit.tissuebank.cfg
2、;/* * * author wuyifei * version 1.0.0 */public enum TissueStatEnum DISDOCIATION("dissociation"), /未入库STORED("stored"), / 已入库RESERVE("reserve"), / 已预定LENDED("lended"), / 已出借USEUP("useup"); / 已耗尽 private String name;private TissueStatEnum(String name)
3、 = name;public String getName() return name;持久化类:package org.scbit.tissuebank.utils;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import java.util.regex.Matcher;import j
4、ava.util.regex.Patternimport mons.cli.BasicParser;import mons.cli.CommandLine;import mons.cli.CommandLineParser;import mons.cli.HelpFormatter;import mons.cli.Option;import mons.cli.Options;import mons.cli.ParseException;public class DomainPostProcessor private final static String IMPORT_ORDERBY = &q
5、uot;import javax.persistence.OrderBy;n"public static void main(String args) DomainPostProcessor dpp = new DomainPostProcessor();dpp.run(args);private void run(String args) Options opts = new Options();opts.addOption("h", false, "Print help for this command line tool");opts.a
6、ddOption("s", true, "Java-Source-File-Path");opts.addOption("c",true,"class to remove mappedby,the format like classA,mappedbyB,mappedbyC;classD,mappedbyE");Option opt = new Option("o", true,"collection to add orderby,the format lib classA,relat
7、ionClassB,OrderBy value");opt.setArgs(Option.UNLIMITED_VALUES);opts.addOption(opt);CommandLineParser parser = new BasicParser();CommandLine cl = null;try cl = parser.parse(opts, args); catch (ParseException e) / TODO Auto-generated catch blocke.printStackTrace();if (cl.hasOption("h")
8、HelpFormatter f = new HelpFormatter();f.printHelp("OptionsTip", opts); else if (cl.hasOption("s") if (cl.hasOption("c")removeMappedBy(cl);if (cl.hasOption("o")addOrderBy(cl); else HelpFormatter f = new HelpFormatter();f.printHelp("OptionsTip", opts);
9、private void addOrderBy(CommandLine cl) String srcPath = cl.getOptionValue("s");String targets = cl.getOptionValues("o");for (String target : targets) String tmp = target.split("");File srcFile = new File(srcPath + "/" + tmp0 + ".java");String srcStr
10、 = readClassFile(srcFile);srcStr = orderByPostProcessor(srcStr, tmp1, tmp2.replaceAll("_", " ");File distFile = new File(srcPath + "/_" + tmp0 + ".java");saveClassFile(srcStr, distFile);srcFile.delete();distFile.renameTo(srcFile);private String readClassFile(F
11、ile srcFile) BufferedReader in = null;try in = new BufferedReader(new FileReader(srcFile); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();String s;StringBuilder sb = new StringBuilder();try while (s = in.readLine() != null)sb.append(s).append("n");in.c
12、lose(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return sb.toString();private void saveClassFile(String srcStr, File distFile) PrintWriter out = null;try out = new PrintWriter(distFile); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTr
13、ace();out.print(srcStr);out.flush();out.close();private void removeMappedBy(CommandLine cl) String srcPath = cl.getOptionValue("s");String groups = cl.getOptionValue("c").split("");for (String g : groups) String classes = g.split(",");File srcFile = new File(s
14、rcPath + "/" + classes0 + ".java");String srcStr = readClassFile(srcFile);for (int i = 1; i < classes.length; i+) srcStr = mappedByPostProcessor(srcStr, classesi);File distFile = new File(srcPath + "/_" + classes0 + ".java");saveClassFile(srcStr, distFile);
15、srcFile.delete();distFile.renameTo(srcFile);private String mappedByPostProcessor(String srcStr, String className) StringBuilder distStr = new StringBuilder();int lastpostion = 0;/ 表达式对象Pattern p = Ppile("(ManyToMany(.+)(, mappedBy=".+")()ns*public .*<"+ className + &
16、quot;> get" + className+ "e?s()s)$", Pattern.MULTILINE);/ 创建 Matcher 对象Matcher m = p.matcher(srcStr);while (m.find() distStr.append(srcStr.substring(lastpostion, m.start();String beginPart = m.group(1);String endPart = m.group(3);distStr.append(beginPart).append(endPart);lastpostio
17、n = m.end();distStr.append(srcStr.substring(lastpostion, srcStr.length();return distStr.toString();private String orderByPostProcessor(String srcStr, String className,String orderByValue) StringBuilder tmpSB = new StringBuilder();StringBuilder distStr = new StringBuilder();int lastpostion = 0;/ 表达式对
18、象Pattern p = Ppile("(?:One|Many)ToMany(?:.*)n)(s+publicsList<" + className+ ">)", Pattern.MULTILINE);/ 创建 Matcher 对象Matcher m = p.matcher(srcStr);while (m.find() tmpSB.append(srcStr.substring(lastpostion, m.start();String beginPart = m.group(1);String endPart = m.group(2);t
19、mpSB.append(beginPart).append("OrderBy("").append(orderByValue).append("")n").append(endPart);lastpostion = m.end();tmpSB.append(srcStr.substring(lastpostion, srcStr.length();p = Ppile("(?:imports.*;n)+)", Pattern.MULTILINE);String tmpStr = tmpSB.toString();m
20、= p.matcher(tmpStr);lastpostion = 0;while (m.find() distStr.append(tmpStr.substring(lastpostion, m.start();String beginPart = m.group(1);distStr.append(beginPart);if (beginPart.indexOf(IMPORT_ORDERBY) = -1)distStr.append(IMPORT_ORDERBY);lastpostion = m.end();distStr.append(tmpStr.substring(lastposti
21、on, tmpStr.length();return distStr.toString();安全设置类:package org.scbit.tissuebank.utils;public class RandomUtils final static String strTable = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz"public static String getRandomString(int intLength) String retStr;int len = strTable.le
22、ngth();boolean bDone = true;do retStr = ""int count = 0;for (int i = 0; i < intLength; i+) double dblR = Math.random() * len;int intR = (int) Math.floor(dblR);char c = strTable.charAt(intR);if ('0' <= c) && (c <= '9') count+;retStr += strTable.charAt(intR);
23、if (count >= 2) bDone = false; while (bDone);return retStr;package erceptor;import javax.servlet.http.HttpServletRequest;import erceptor.Fault;import org.apache.cxf.message.Message;import org.apache.cxf.phase.AbstractPhaseInterceptor;import org.apache.
24、cxf.phase.Phase;import org.apache.cxf.transport.http.AbstractHTTPDestination;import erceptor.LoginInterceptor;import org.springframework.stereotype.Component;Component("AuthenticationAndAuthorizationInterceptor")public class AuthenticationAndAuthorizationInterce
25、ptor extendsAbstractPhaseInterceptor<Message> public AuthenticationAndAuthorizationInterceptor() super(Phase.PRE_PROTOCOL);public AuthenticationAndAuthorizationInterceptor(String s) super(Phase.PRE_PROTOCOL);Overridepublic void handleMessage(Message arg0) throws Fault HttpServletRequest reques
26、t = (HttpServletRequest) arg0.getContextualProperty(AbstractHTTPDestination.HTTP_REQUEST);Object user = request.getSession().getAttribute(LoginInterceptor.USER_HANDLE);if (user = null)throw new RuntimeException("Invalid Authentication");异常处理类:package org.scbit.tissuebank.service.exception;
27、public class UniquePropertyAlreadyExistException extends RuntimeException public UniquePropertyAlreadyExistException() public UniquePropertyAlreadyExistException(String message) super(message);public UniquePropertyAlreadyExistException(String domain, String property) this(domain + "." + pr
28、operty);public UniquePropertyAlreadyExistException(String message, Throwable cause) super(message, cause);public UniquePropertyAlreadyExistException(String domain, String property,Throwable cause) this(domain + "." + property, cause);WebSerive类:package org.scbit.tissuebank.ws;import java.u
29、til.List;import javax.jws.WebService;import org.scbit.tissuebank.domain.Icecontainer;WebServicepublic interface ISpaceManager List<Icecontainer> listIcecontainerInHouse(Integer houseId);空间WebService执行类:package org.scbit.tissuebank.ws.impl;import java.util.List;import javax.annotation.Resource;
30、import javax.jws.WebService;import javax.servlet.http.HttpServletRequest;import javax.xml.ws.WebServiceContext;import javax.xml.ws.handler.MessageContext;import org.apache.cxf.transport.http.AbstractHTTPDestination;import org.scbit.tissuebank.domain.Icecontainer;import org.scbit.tissuebank.domain.Ho
31、use;import org.scbit.tissuebank.ws.ISpaceManager;WebService(endpointInterface = "org.scbit.tissuebank.ws.ISpaceManager")public class SpaceManagerImpl implements ISpaceManager Resourceprivate WebServiceContext context;Overridepublic List<Icecontainer> listIcecontainerInHouse(Integer h
32、ouseId) /Icecontainer ice = new Icecontainer();System.out.println("&&");MessageContext ctx = context.getMessageContext();HttpServletRequest request = (HttpServletRequest) ctx.get(AbstractHTTPDestination.HTTP_REQUEST);System.out.println(request.getSession();/return "Hello "
33、; + text;House house = new House();return house.getIcecontainers();/return null;基本DAO类:package org.scbit.tissuebank.dao;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;im
34、port org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Projections;import org.hibernate.ejb.EntityManagerImpl;import org.scbit.tissuebank.dao.exception.EntityNotFoundException;import org.springframework.transaction.anno
35、tation.Transactional;Transactionalpublic class BaseDAO<T> / T.classprivate Class<T> entityClass;PersistenceContext(unitName = "tissueBank")protected EntityManager em;SuppressWarnings("unchecked")public BaseDAO() Type type = getClass().getGenericSuperclass();if (type i
36、nstanceof ParameterizedType) ParameterizedType pt = (ParameterizedType) type;type = pt.getActualTypeArguments()0;entityClass = (Class<T>) type;public void persist(T t) em.persist(t);public T merge(T t) return em.merge(t);public void remove(Object id) throws EntityNotFoundException T t = find(i
37、d);if (t != null)em.remove(t);elsethrow new EntityNotFoundException(id.toString();public T find(Object id) return em.find(entityClass, id);/* * 使用Hql查询的的分页查询类. * 支持执行Count查询取得总记录条数 * 用户在web层构造查询条件detachedCriteria,和可选的startIndex,调用业务bean的相应findByCriteria方法,返回一个PaginationSupport的实例ps。 * ps.getItems()得
38、到已分页好的结果集 * ps.getIndexes()得到分页索引的数组 * ps.getTotalCount()得到总结果数 * ps.getStartIndex()当前分页索引 * ps.getNextIndex()下一页索引 * ps.getPreviousIndex()上一页索引 */ SuppressWarnings("unchecked")public PaginationSupport<T> findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize,
39、final int startIndex) Session session;try session = (Session) em.getDelegate(); catch (ClassCastException e) throw new NoHibernateSupportException("The Method findPageByCriteria need hibernate support.");Criteria criteria = detachedCriteria.getExecutableCriteria(session);/* * 以查询getCountBy
40、Criteria的形式获取totalCount的值 */ int totalCount = (Integer) criteria.setProjection(Projections.rowCount().uniqueResult().intValue();criteria.setProjection(null);List<T> items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();PaginationSupport<T> ps = new PaginationSupport&
41、lt;T>(items, totalCount,pageSize, startIndex);return ps;public PaginationSupport<T> findPageByCriteria(final DetachedCriteria detachedCriteria) return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,0);public PaginationSupport<T> findPageByCriteria(final DetachedCriter
42、ia detachedCriteria, final int startIndex) return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,startIndex);SuppressWarnings("unchecked")public List<T> findAllByCriteria(final DetachedCriteria detachedCriteria) if (em instanceof EntityManagerImpl) Criteria criteria
43、= detachedCriteria.getExecutableCriteria(EntityManagerImpl) em).getSession();return criteria.list(); elsethrow new NoHibernateSupportException("The Method findAllByCriteria need hibernate support.");public int getCountByCriteria(final DetachedCriteria detachedCriteria) Session session;try
44、session = (Session) em.getDelegate(); catch (ClassCastException e) throw new NoHibernateSupportException("The Method findPageByCriteria need hibernate support.");Criteria criteria = detachedCriteria.getExecutableCriteria(session);Integer count = (Integer) criteria.setProjection(Projections
45、.rowCount().uniqueResult();return Value();package org.scbit.tissuebank.utils;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import java.util.regex.Matcher;import java.util
46、.regex.Pattern;import mons.cli.BasicParser;import mons.cli.CommandLine;import mons.cli.CommandLineParser;import mons.cli.HelpFormatter;import mons.cli.Option;import mons.cli.Options;import mons.cli.ParseException;public class DomainPostProcessor private final static String IMPORT_ORDERBY = "imp
47、ort javax.persistence.OrderBy;n"public static void main(String args) DomainPostProcessor dpp = new DomainPostProcessor();dpp.run(args);private void run(String args) Options opts = new Options();opts.addOption("h", false, "Print help for this command line tool");opts.addOptio
48、n("s", true, "Java-Source-File-Path");opts.addOption("c",true,"class to remove mappedby,the format like classA,mappedbyB,mappedbyC;classD,mappedbyE");Option opt = new Option("o", true,"collection to add orderby,the format lib classA,relationClas
49、sB,OrderBy value");opt.setArgs(Option.UNLIMITED_VALUES);opts.addOption(opt);CommandLineParser parser = new BasicParser();CommandLine cl = null;try cl = parser.parse(opts, args); catch (ParseException e) / TODO Auto-generated catch blocke.printStackTrace();if (cl.hasOption("h") HelpFor
50、matter f = new HelpFormatter();f.printHelp("OptionsTip", opts); else if (cl.hasOption("s") if (cl.hasOption("c")removeMappedBy(cl);if (cl.hasOption("o")addOrderBy(cl); else HelpFormatter f = new HelpFormatter();f.printHelp("OptionsTip", opts);private
51、 void addOrderBy(CommandLine cl) String srcPath = cl.getOptionValue("s");String targets = cl.getOptionValues("o");for (String target : targets) String tmp = target.split("");File srcFile = new File(srcPath + "/" + tmp0 + ".java");String srcStr = read
52、ClassFile(srcFile);srcStr = orderByPostProcessor(srcStr, tmp1, tmp2.replaceAll("_", " ");File distFile = new File(srcPath + "/_" + tmp0 + ".java");saveClassFile(srcStr, distFile);srcFile.delete();distFile.renameTo(srcFile);private String readClassFile(File src
53、File) BufferedReader in = null;try in = new BufferedReader(new FileReader(srcFile); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();String s;StringBuilder sb = new StringBuilder();try while (s = in.readLine() != null)sb.append(s).append("n");in.close();
54、 catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return sb.toString();private void saveClassFile(String srcStr, File distFile) PrintWriter out = null;try out = new PrintWriter(distFile); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();out.print(srcStr);out.flush();out.close();private void removeMappedBy(CommandLine cl) String srcPath = cl.getOptionValue("s");String groups
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞学校宿舍管理制度
- 五金制品公司管理制度
- 中学团员活动管理制度
- 串串火锅餐厅管理制度
- 中国地铁文件管理制度
- 主播宿舍制度管理制度
- it行业员工管理制度
- 交友平台会员管理制度
- 人才项目项目管理制度
- 东莞车辆维修管理制度
- 保温材料安全管理制度
- 2025年甘肃高考物理试卷真题及答案详解(精校打印版)
- 2025至2030中国工业电机行业市场发展现状及商业模式与投资发展报告
- 部编人教版小学语文1-6年级词语表
- 测绘类技术设计管理制度
- 中医艾灸盒课件下载
- 手术室环境卫生管理要求
- 浙江省温州市名校2025届七下数学期末考试试题含解析
- 《铁路旅客运输组织(活页式)》课件 7.3 旅客伤害应急处置
- 公司合同月结协议书
- 2025年海绵项目评估报告
评论
0/150
提交评论