/*
* StoryDAO.java
*
* Created on August 24, 2002, 7:01 PM
*/
package com.apress.javaedge.story.dao;
import com.apress.javaedge.common.*;
import com.apress.javaedge.story.StoryVO;
import org.apache.commons.logging.Log;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerException;
import org.apache.ojb.broker.metadata.DescriptorRepository;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.apache.ojb.broker.query.QueryFactory;
import java.util.Collection;
import java.util.Iterator;
/**
*
* StoryDAO is responsible for all CRUD logic associated with stories.
*
*/
public class StoryDAO implements DataAccessObject {
public static final int MAXIMUM_TOPSTORIES = 11;
/**
* Commons Log for this class
*/
private static Log log = ServiceLocator.getInstance().getLog(StoryDAO.class);
/**
* Finds a single Story record by a story id passed into the method.
* @see com.apress.javaedge.common.DataAccessObject#findByPK(java.lang.String)
*/
public ValueObject findByPK(String primaryKey) throws DataAccessException {
log.debug("************Entering the StoryDAO.findByPK***************");
PersistenceBroker broker = null;
StoryVO storyVO = null;
try {
broker = ServiceLocator.getInstance().findBroker();
storyVO = new StoryVO();
storyVO.setStoryId(new Long(primaryKey));
Query query = new QueryByCriteria(storyVO);
storyVO = (StoryVO) broker.getObjectByQuery(query);
} catch (ServiceLocatorException e) {
log.error("PersistenceBrokerException thrown in StoryDAO.findByPK()", e);
throw new DataAccessException("Error in StoryDAO.findByPK(): " + e.toString(), e);
} finally {
if (broker != null)
broker.close();
}
log.debug("************Done with the StoryDAO.findByPK()***************");
return storyVO;
}
/**
* Returns a collection of the top latest stories. The number of records to
* be returned are controlled by the MAXIMUM_TOPSTORIES constant on this
* class.
* @return Collection
* @throws DataAccessException
*/
public Collection findTopStory() throws DataAccessException {
log.debug("************Entering with the StoryDAO.findTopStory()***************");
PersistenceBroker broker = null;
Collection results = null;
Criteria criteria = new Criteria();
criteria.addOrderByDescending("storyId");
Query query = QueryFactory.newQuery(StoryVO.class, criteria);
query.setStartAtIndex(0);
query.setEndAtIndex(MAXIMUM_TOPSTORIES);
try {
broker = ServiceLocator.getInstance().findBroker();
DescriptorRepository descriptorRepository = broker.getDescriptorRepository();
Iterator iterator = descriptorRepository.iterator();
log.debug("--------------------------------------");
while (iterator.hasNext()){
ClassDescriptor classDescriptor = (ClassDescriptor) iterator.next();
log.debug("Class Name: " + classDescriptor.getClassNameOfObject());
log.debug("Table Name: " + classDescriptor.getFullTableName());
}
log.debug(descriptorRepository);
log.debug("--------------------------------------");
results = (Collection) broker.getCollectionByQuery(query);
} catch (ServiceLocatorException e) {
log.error("PersistenceBrokerException thrown in StoryDAO.findTopStory()", e);
throw new DataAccessException("Error in StoryDAO.findTopStory(): " + e.toString(), e);
} finally {
if (broker != null) broker.close();
}
log.debug("************Done with the StoryDAO.findTopStory()***************");
return results;
}
/**
* Inserts a single story record into the database.
*
* @see com.apress.javaedge.common.DataAccessObject#insert(com.apress.javaedge.common.ValueObject)
*/
public void insert(ValueObject insertRecord) throws DataAccessException {
log.debug("************Entering the StoryDAO.insert()***************");
PersistenceBroker broker = null;
try {
StoryVO storyVO = (StoryVO) insertRecord;
broker = ServiceLocator.getInstance().findBroker();
broker.beginTransaction();
broker.store(storyVO);
broker.commitTransaction();
} catch (PersistenceBrokerException e) {
// if something went wrong: rollback
broker.abortTransaction();
log.error("PersistenceBrokerException thrown in StoryDAO.insert()", e);
throw new DataAccessException("Error in StoryDAO.insert(): " + e.toString(), e);
} catch (ServiceLocatorException e) {
log.error("ServiceLocatorException thrown in StoryDAO.insert()", e);
throw new DataAccessException("ServiceLocatorException thrown in StoryDAO.insert()", e);
} finally {
if (broker != null)
broker.close();
}
log.debug("************Done with the StoryDAO.insert()***************");
}
/**
* Deletes a single record from the story table using OJB.
*/
public void delete(ValueObject deleteRecord) throws DataAccessException {
log.debug("************Entering the StoryDAO.delete()***************");
PersistenceBroker broker = null;
try {
broker = ServiceLocator.getInstance().findBroker();
StoryVO storyVO = (StoryVO) deleteRecord;
//Begin the transaction.
broker.beginTransaction();
broker.delete(storyVO);
broker.commitTransaction();
} catch (PersistenceBrokerException e) {
// if something went wrong: rollback
broker.abortTransaction();
log.error("PersistenceBrokerException thrown in StoryDAO.delete()", e);
throw new DataAccessException("Error in StoryDAO.delete()", e);
} catch (ServiceLocatorException e) {
throw new DataAccessException("ServiceLocator exception in StoryDAO.delete()", e);
} finally {
if (broker != null) broker.close();
}
log.debug("************Done with the StoryDAO.delete()***************");
}
/**
* Updates a single record from the story table using OJB.
*/
public void update(ValueObject updateRecord) throws DataAccessException {
log.debug("************Entering the StoryDAO.update()***************");
PersistenceBroker broker = null;
try {
StoryVO storyVO = (StoryVO) updateRecord;
broker = ServiceLocator.getInstance().findBroker();
broker.beginTransaction();
broker.store(storyVO);
broker.commitTransaction();
} catch (PersistenceBrokerException e) {
// if something went wrong: rollback
broker.abortTransaction();
log.error("PersistenceBrokerException thrown in StoryDAO.update()", e);
throw new DataAccessException("Error in StoryDAO.update()", e);
} catch (ServiceLocatorException e) {
log.error("ServiceLocatorException thrown in StoryDAO.delete()", e);
throw new DataAccessException("ServiceLocatorException error in StoryDAO.delete()", e);
} finally {
if (broker != null) broker.close();
}
log.debug("************Done with the StoryDAO.updat
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
src.zip是Struct 与 Ajax 书中的源代码. ObjectRelationalBridge(OJB) 1.0.4:OJB是一个开源的对象关系映射工具,最初起源于Apache DB Project。Lucene:它是一个基于Java的开源搜索引擎。可以从http://lucene.apache.org下载Lucene1.9.1。
资源推荐
资源详情
资源评论
收起资源包目录
struts与ajax设计 (164个子文件)
Thumbs.db 5KB
struts-config_1_1.dtd 35KB
struts-config_1_2.dtd 34KB
web-app_2_3.dtd 33KB
repository.dtd 26KB
struts-config_1_0.dtd 18KB
web-app_2_2.dtd 16KB
tiles-config_1_1.dtd 12KB
validator-rules_1_1.dtd 11KB
validation_1_1.dtd 10KB
tiles-config.dtd 2KB
StoryDAO.java 9KB
MemberDAO.java 8KB
ServiceLocatorLRU.java 8KB
ServiceLocator.java 7KB
PostStory.java 7KB
PostStoryForm.java 7KB
PostStoryDynaForm.java 5KB
PostStoryMapForm.java 5KB
DocumentConversionTest.java 5KB
PostStoryValidatorForm.java 5KB
NewsletterManager.java 4KB
TestMemberCRUD.java 4KB
VulgarityRule.java 4KB
DAOFactory.java 3KB
TestStoryCRUDJC.java 3KB
IndexContent.java 3KB
NewsletterPlugIn.java 3KB
MailExceptionHandler.java 3KB
StoryManagerEJBImpl.java 3KB
MemberFilter.java 3KB
PostCommentForm.java 3KB
MemberVO.java 3KB
DocumentConversionTool.java 3KB
MemberManagerBD.java 3KB
RequestProcessorHelper.java 3KB
StoryManagerPOJOImpl.java 3KB
TestStoryCRUD.java 3KB
StoryManagerBean.java 3KB
PostComment.java 2KB
PostStoryDynaValidatorForm.java 2KB
LoginForm.java 2KB
SignUpForm.java 2KB
StoryVO.java 2KB
SearchIndex.java 2KB
PostStoryValidator.java 2KB
PostStory.java 2KB
HomePageSetupAction.java 2KB
SignUp.java 2KB
Search.java 2KB
JavaEdgeRequestProcessor.java 2KB
StoryDetailSetupAction.java 2KB
SQLCode.java 2KB
ActionBase.java 2KB
AddressVO.java 2KB
Logout.java 2KB
StoryCommentVO.java 2KB
SearchForm.java 2KB
JavaEdgeTilesRequestProcessor.java 1KB
TestServiceLocator.java 1KB
PostCommentSetupAction.java 1KB
ServiceLocatorException.java 1KB
DataAccessObject.java 1KB
PostStorySetupAction.java 1KB
SignUpSetupAction.java 1KB
SearchResults.java 1KB
Login.java 1023B
ApplicationException.java 1012B
VulgarityFilter.java 992B
AllTests.java 991B
DataAccessException.java 980B
TilesTestAction.java 948B
SearchFormSetupAction.java 892B
IndexerPlugIn.java 883B
NewsletterTask.java 801B
IndexScheduler.java 680B
PrizeManager.java 600B
StoryManagerBD.java 585B
StoryManager.java 563B
LocalAction.java 478B
IndexTask.java 467B
ValueObject.java 460B
IStoryManager.java 444B
JavaEdgeActionMapping.java 378B
StoryManagerHome.java 346B
SearchConfiguration.java 252B
netchange_logo.jpg 525KB
searchFormContent.jsp 2KB
postCommentContent.jsp 2KB
postCommentContent.jsp 2KB
header.jsp 2KB
header.jsp 2KB
postStoryMapContent.jsp 2KB
postStoryContent.jsp 2KB
postStoryContent.jsp 2KB
storyDetailContent.jsp 2KB
signUpContent.jsp 2KB
signUpContent.jsp 2KB
storyDetailContent.jsp 2KB
header_graphics.jsp 2KB
共 164 条
- 1
- 2
资源评论
- wang3063402422013-09-24讲解 struts 前端和Ajax结合的好书,。。。
zjsong
- 粉丝: 3
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功