java标本库管理系统代码_第1页
java标本库管理系统代码_第2页
java标本库管理系统代码_第3页
java标本库管理系统代码_第4页
java标本库管理系统代码_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论