| /** |
| * Alernate mutator for key property. |
| * Used to override ancestor setKey method. |
| */ |
| public void setArticleString(String article) { |
| if (isBlank(article)) |
| setArticle(null); |
| else |
| setArticle(Integer.valueOf(article)); |
| } |
| |
| |
| /** |
| * Alernate accessor for key property. |
| * Used to override ancestor getKey method. |
| */ |
| public String getArticleString() { |
| Integer article = getArticle(); |
| if (article==null) |
| return null; |
| return article.toString(); |
| } |
| |
| |
| [ARTIMUS] |
| |
| [Ordering is LIFO. Last thing done for a day is the first item listed.] |
| |
| TODO: |
| - Add now string for articleInsert |
| - Check with HypersonicSQL |
| - Unit tests |
| |
| |
| 31-DEC-01 |
| --------- |
| + article.http.Form: Change reset to use setters. |
| |
| |
| 06-NOV-01 |
| --------- |
| + Rename article/Model,key/Model to Access (i.e. Data Access). |
| + Update README.txt |
| + Rename ApplicationResources to Resources |
| |
| |
| 30-OCT-01 |
| --------- |
| + article/SearchHours,SearchLast,SearchTitle,SearchProperty: Change check for parameters to occur before call to Model. |
| |
| |
| 27-OCT-01 |
| --------- |
| + wizard/*: Expand additional example code. |
| + */Model,*/sql/Statement: update to use Scaffold StatementUtils, ConnectionPool. |
| + classes/poolman.xml: update for new default resource name. |
| + ConnectionPool, StatementUtils: move to Scaffolding. |
| |
| |
| 26-OCT-01 |
| --------- |
| + keys: add package. |
| + http/ArticleForm: move to article/http/Form. |
| + http/ModelHelper: Move to Scaffold. |
| + sql/ConnectionPool: Move to Scaffold, and add wrapper. |
| |
| |
| 25-OCT-01 |
| --------- |
| + wizard/*: Initial version to test data access routines. |
| + Search/*: Refactor most to subclass SearchProperties. |
| + articles/SearchProperty: initial version. |
| + sql/Statements: rename as StatementUtils. |
| + articles/sql/Commands,Statements: initial versions. |
| + sql/Data: Move most methods to articles/Model |
| + articles/*: Refactor names from "query" to "model. |
| |
| |
| 24-OCT-01 |
| --------- |
| + search/Engine: update to throw QueryExceptions (per LuceneUtil changes). |
| + articles/*: Refactor for changes in Scaffold. |
| + *.jsp: Correct usage of html:html tag. |
| + build.xml: Add WAR to deployment target. |
| |
| |
| 23-OCT-01 |
| --------- |
| + Store: let insert/update exceptions pass thru. |
| + HelperAction: Enhance exception handling to use new ChainedException methods. |
| + Refactor to use Scaffold query package (instead of util). |
| + change "sql.*" tokens to "data.*" |
| |
| |
| 21-OCT-01 |
| --------- |
| + Refactor to use new Scaffold Query* and HelperAction class. |
| |
| |
| 09-OCT-01 |
| --------- |
| + Rename articles to artimus. |
| + Rename ext to scaffold. |
| |
| |
| 08-OCT-01 |
| --------- |
| + AccessBean: refactor getMap(int) method. |
| + AccessBean,AccessBeanList: Add first() method |
| + client: refactor to call performCrud on ancestor. |
| + ext.http.Access: add performCrud method. |
| |
| 27-SEP-01 |
| --------- |
| + Access,AccessBean: General refactoring. |
| + ArticleForm: Remove toMap method in favor of ancestor. |
| + AccessBean: Conform to new DataBeanBase source. |
| + DataBeanBase: Add default behavior for toMap using BeanUtil.describe |
| + Convert MapAccess to DataBean, and refactor. Add getKeyInt,setKeyInt methods. |
| + *: Review and revise Javadoc. |
| |
| |
| 26-SEP-01 |
| --------- |
| + AccessBeanMap: Remove unused class. |
| + AccessBean,AccessBeanList: Remove methods not used in current version of application. |
| + Access,Client: Refactor SaveConfirm method from ancestor Client class. |
| + ArticleHelper: Move call to allocateKey from Access.crud. |
| + ArticleHelper: Add loops around update,insert for multiple forms. |
| + README.TXT: Update for Tomcat 4.0 production release. |
| + ConnectionPool: Eliminate unnecessary statics |
| + build.xml: Add Javadoc targete |
| + com/*: Shorten package name to proweb |
| + src/*: Move source under java, per new conventions. |
| + WEB-INF/pages/*: Move pages to root; add stylesheet. |
| |
| |
| 18-SEP-01 |
| --------- |
| + ApplicationResources: Add missingHTML markup to error tags. |
| + Engine: Update path for index (/var/lucene/articles) |
| + poolman.xml |
| |
| |
| 13-SEP-01 |
| --------- |
| + LuceneUtils |
| |
| |
| 10-SEP-01 |
| --------- |
| |
| + Menu.jsp: Add Create Index button for Lucene. |
| + CreateIndex,Data,Statements,Commands: Add support for Lucene. |
| + ConnectionPool: Add check for null connection. |
| + README.TXT |
| |
| |
| 09-SEP-01 |
| --------- |
| + Render.java: intial version. |
| + ArticleHelper,build.xml,strut.xml,: Add Lucene support. |
| + ArticleForm, CreateTables, web.xml, |
| |
| |
| 26-AUG-01 |
| --------- |
| + ext.search.LucineUtils: initial version. |
| + search.Engine: initial version. |
| + Data: add selectArticle(target) method. |
| + CreateIndex: initial version. |
| + Add lucene.jar to lib |
| |
| |
| 22-AUG-01 |
| --------- |
| + Statements,Data,ArticleHelper: refactor. |
| + ListForm: remove as redundant. |
| + RequestUtils.getCollection: initial version. |
| |
| |
| 20-AUG-01 |
| --------- |
| + AccessBeanMap - initial version |
| + Change ListAccessBean to AccessBeanList |
| + Refactor ResultList as ResultCollection |
| + Change package name to org.apache.struts.artimus |
| |
| |
| 03-AUG-01 |
| --------- |
| + ArticleHelper,Menu: Add support for title, author, content search. |
| + ArticleList: initial version. |
| + Commands: add SQL statments for title,author search. |
| + Statements.getResultsLike: initial version. |
| |
| |
| 02-AUG-01 |
| --------- |
| |
| + TASK: Test revised pages and control flow. All OK, but text search (need to recreate tables). |
| + Access.setDispatch: initial version to maintain DispatchBean property. |
| + Menu.jsp: initial version (should have done this first!). |
| + config: Refactor to implement only what's needed for "Artimus-1". |
| + ext: General refactoring and clean-up. |
| |
| 01-AUG-01 |
| --------- |
| + : Refactor to use DispatchBean interface. |
| + TASK: Refactor classes to use "dispatch" rather than "task" |
| + Data,Statement: Add ResultList version of Select, to return a List. |
| + Data,Statement: Add all String signatures for insert,update. |
| + ListAccessBean: initial version. |
| + TASK: Refactor DataAccess/AccessBean/Access/Helper classes to implement a List rather than a RowSet. Remove dependancies on Iterators for now, since this was causing ConcurrentModificationException's. |
| + DispatchBean,ResultList: intial versions. |
| |
| 31-JUL-01 |
| --------- |
| + TASK: Test input/output. |
| + pages/List,Article: Enable bean, logic, and dbTags libs. |
| + struts-config: update to use Client for Entry mappings. |
| + Helper,Data,Commands: Add CRUD for Entry form. |
| + Form: Update to declare AccessMap interface (methods already implemented). |
| + Helper,Access,AccessMap: Initial version |
| + CreateTables: Revise to call Data.object methods. Remove obsolete dependancies on SQL packages. |
| + Data: initial version. Create high-level wrappers around calls to Statement. |
| + CreateTables: Refactor DAO code into sql/Statements class. |
| + CreateTables: Add insert of starter keys for other tables. Drop, create, test. |
| + CreateTables: Change text to blob and varchar to char, for better compatability. |
| We will be using Lucene for full-text search, and MySQL will change char to varchar anyway. |
| + TASK: test CreateTables. |
| + mysql: create database artimus. |
| |
| |
| 30-JUL-01 |
| --------- |
| + struts-config: Add mapping for CreateTables. |
| + CreateTables,Commands,ConnectionPool,RowSets,Statements: initial versions. |
| + struts-config: update mappings for Form, including welcome and done. |
| + pages/Article,Entry,List: update for Article properties, including field types and lengths. Add data-entry comments from spec. |
| + http/Form: initial version. |
| + Update "spec" (chapter 17) to reflect development changes. |
| |
| |
| 29-JUL-01 |
| --------- |
| + Extended headbanging session with Validator library. The client-side scripts are present but broken. Server-side validation is fine. Posted query to Struts list. Will proceed and return to this later |
| + Draft Article, List, and Entry skeletons. |
| + Test building javadoc (not working?) |
| + Setup build.xml. Create src/build folder. Build skeleton classes. |
| + Setup skeleton pages, forwards, mappings, Form, and Action. |
| + struts-config.xml: Config for MySql, and ready alternate configs for hSQL and postgres. |
| + web.xml: Add default config for validator, validator tags, dbTags. |
| + lib: Place validator.jar, dbTags.jar, and hsqldb.jar under lib. |
| + WEB-INF: Move *.tld's under tablibs; update web.xml |
| + WEB-INF: Create src,doc,taglibs, and pages folders. |
| + ROOT: Create artimus from Struts blank. |
| |
| |
| 28-JUL-01 |
| --------- |
| + doc: Second draft of "spec" as Chapter 17 text. |
| |
| |
| |
| [] |
| |
| dc: |
| |
| title |
| creator |
| subject |
| description |
| contributor |
| date |
| |
| publisher |
| type |
| format |
| identifier (url) |
| source |
| language |
| relation |
| coverage |
| rights |
| |
| ocs: |
| image 88x31 |
| format |
| contentType |
| updatePeriod |
| updateFrequency |
| updateBasis |
| |
| ical: |
| |
| COMPLETED |
| DTEND |
| DUE |
| DTSTART |
| DURATION |
| |
| DTSTAMP |
| LAST-MODIFIED |
| |
| RECUR |
| |
| VEVENT |
| VTODO |
| VJOURNAL |
| |
| eventDateStart |
| eventDateEnd |
| |
| alarmDateStart |
| alarmDataEnd |
| |
| |
| |
| |
| [] |
| |
| // Using Skeletons files with Struts. |
| |
| Integrating Artimus in your own application (artimus.jar) |
| |
| Internationalizing Artimus |
| |
| [] |
| |
| copy skel/View.jsp as ../Article.jsp |
| |
| comment include for bean and logic tags at the top, and browser will ignore them. |
| |
| insert {placeholders} next to bean:write tages where runtime content will go. update the property setting so these will be ready-to-go later. |
| |
| remove right and left columns, so this is a one-column table. |
| |
| add filter="false" to bean:write tag for article. this will output HTML as is, so we can use it in our article. |
| |
| remove form buttons; body onload |
| |
| change paths for local forwards on /Skel mapping to "/WEB-INF/pages/Article.jsp" |
| |
| load and test. |
| |
| reloading mappings. |
| |
| [] |
| |
| copy skel/Result.jsp as ../List.jsp |
| |
| link date,topic,article as plain forwards |
| |
| add forwards,actions to mappings |
| |
| [] |
| |
| copy skel/Form.jsp as ../Entry.jsp |
| |
| change labels, but leave property1..0 |
| |
| adding fowards, actions to mappings. |
| |
| [] |
| |
| package naming - callout box |
| |
| error handlng - log |
| |
| |
| [] |
| |
| Thanks, Hans. We're on the same page now ;-) |
| |
| I imagine you've also looked at the Oracle Portlet? |
| |
| http://otn.oracle.com/products/iportal/htdocs/3_0_8_qt/qt_home.htm |
| |
| http://otn.oracle.com/products/iportal/htdocs/3_0_8_qt/qt_frm.htm |
| |
| http://otn.oracle.com/products/iportal/htdocs/kci/kcihome.html |
| |
| In this context, I was thinking of creating backend "Providers" for things like RSS, and exposing this resource using Tiles as the actual "Portlet" part. |
| |
| |
| |
| |
| == |
| |
| Provides a communication link between the portal services and portlets. |
| Implements session startup and provider login. |
| Acts as a proxy to all portlet calls. |
| Manages the portlet repository list. |
| |
| == |
| |
| I think what I wanted to look at first was an API for what Oracle calls "Providers". |
| |
| http://portalstudio.oracle.com/servlet/page?_pageid=475&_dad=ops&_schema=OPSTUDIO&_mode=3 |
| |
| The idea being that a Provider could be plugged into an Action as a helper class, and wrap up what's needed into a bean to be displayed in a Tile. |
| |
| The Providers could be setup as application resources, the way the Struts ActionMappings are setup, and the way the ValidatorForm configurations and Tiles definitions are setup. |
| |
| At this point, I would look to container-managed security for the users, extending the idea of a database or JDBCRealm to provide single logon for the Providers, and as the basis for a user profile object to store customization options for the view. |
| |
| |
| At this point, some questions occur: |
| |
| Does this intersect with the workflow API proposed to the commons and struts-dev last week? What's the difference between a portlet and a persistant workflow? |
| |
| Are Jakarta portlets to be servlets, the way JSPs are servlets? If not, should they be? |
| |
| Or, from a patterns perspective, are portlets just some kind of helper object? |
| |
| Could some kind of porlet be packaged as a set of ActionMappings, Actions, JSPs, and associated classes, and plunked into the middle of a Struts application? |
| |
| Oracle Portlet Provider -> Struts Action |
| |
| |
| What essential services does a portlet API need to provide? |
| |
| * Discovery |
| * Authorization |
| * Profiles (user customization, skins) |
| * Presentation fragments (scrape) |
| * Resource configuration, application and user (profiles?) |
| |
| Could an abstract PortletProfile object (or interface) be used to manage |
| |
| My initial feeling is that, in a Java MVC environment, a Portlet should be a specialized controller servlet that exposes services to the application's controller servlet through a specific API. The Portlet would expose itself through the ServletContext, where it can be called upon by other servlets in the application. We should be able to load a portlet servlet into any arbitrary application, just as we can load a JSP servlet into any arbitrary application, without modifying the container. |
| |
| [] |
| |
| select donor,fullName,street,postOffice,postalCode,item,name,qtyReceived,market from gavel_donor D,gavel_item I where D.donor=I.donor order by donor; |
| |
| SELECT I.donor,fullName,item,name FROM gavel_item I LEFT OUTER JOIN gavel_donor D ON (I.donor=D.donor) ORDER BY fullName,donor; |
| |
| [] |
| |
| /* |
| public void setNext(Object source) { |
| // java.lang.IllegalAccessException |
| // pop: IllegalAccessException, InvocationTargetException |
| // des: + NoSuchMethodException |
| BeanUtils.populate( |
| this.rows.next(), |
| BeanUtils.describe(source) |
| ); |
| } |
| |
| public void getNext(Object target) { |
| BeanUtils.populate( |
| target, |
| BeanUtils.describe(this.rows.next()) |
| ); |
| } |
| |
| public Map nextToMap() { |
| return BeanUtils.describe(this.rows.next()); |
| } |
| |
| public static void populateBean(Object target, Object source) { |
| BeanUtils.populate( |
| target, |
| BeanUtils.describe(source) |
| ); |
| } |
| */ |
| |