Skip to content

Latest commit

 

History

History
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
	

<head>
<meta name=Title content="iShacks Readme">
<meta name=Keywords content="">
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 10">
<meta name=Originator content="Microsoft Word 10">
<link rel=File-List href="proxy.php?url=https%3A%2F%2Fwww.github.com%2FReadme_files%2Ffilelist.xml">
<title>iShacks Readme</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Template>Normal</o:Template>
  <o:LastAuthor>a b</o:LastAuthor>
  <o:Revision>3</o:Revision>
  <o:Created>2002-10-15T22:43:00Z</o:Created>
  <o:LastSaved>2002-10-15T22:48:00Z</o:LastSaved>
  <o:Pages>2</o:Pages>
  <o:Words>625</o:Words>
  <o:Characters>3566</o:Characters>
  <o:Company>c</o:Company>
  <o:Lines>29</o:Lines>
  <o:Paragraphs>7</o:Paragraphs>
  <o:CharactersWithSpaces>4379</o:CharactersWithSpaces>
  <o:Version>10.1316</o:Version>
 </o:DocumentProperties>
</xml><![endif]-->
<style>
<!--
 /* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:Times;}
h1
	{mso-style-next:Normal;
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:1;
	font-size:12.0pt;
	font-family:Times;
	mso-font-kerning:0pt;
	font-weight:normal;}
h2
	{mso-style-next:Normal;
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:12.0pt;
	font-family:Times;
	font-weight:normal;
	font-style:italic;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:Times;}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
p
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:Times;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
</head>

	

<body bgcolor=white lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>

<div class=Section1>

<p align=center style='text-align:center'><span style='font-size:18.0pt'><b>iShacks</b></span><span
style='font-size:18.0pt'><o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><b>Difficulty Level:</b></span><span style='font-size:
12.0pt'> Intermediate<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><b>Topics Covered:</b></span><span
style='font-size:12.0pt'> EOF, cookies, DirectActions, component validation <o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><b>Framework Classes Used: </b></span><span
style='font-size:12.0pt'>EOF Control Layer, WOCookie, WOComponent validation
mechanisms, JavaRealEstate example framework<b><o:p></o:p></b></span></p>

<p><span style='font-size:12.0pt'><b>Overview:</b></span><span
style='font-size:12.0pt'><o:p></o:p></span></p>

<p class=MsoBodyText><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This
in an HTML based application that uses the JavaRealEstate Framework (also used
by the JCRealEstate example which is Java Client based).</p>

<p class=MsoBodyText style='text-indent:.5in'>This example implements a simple
Real Estate site in which Agents make recommendations to their Customers about
which Listings they should look at. There is also a general Listings search
mechanism, including the support of searching via Direct Actions. New Listings,
Customers and Agents can be added to the Data Base. The edit pages for Listings
and Customers use component validation to make sure the field input is correct.</p>

<p class=MsoBodyText style='text-indent:.5in'>WOCookies are used to implement
and automatic login functionality.</p>

<p><span style='font-size:12.0pt'><b>Usage:</b></span><span style='font-size:
12.0pt'><o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt;text-indent:.5in'><span
style='font-size:12.0pt'>There are three ways you can use the application,
depending on how you log in. In this section, when mentioning a particular page
name we also list the WO Component it refers to in the project.<o:p></o:p></span></p>

<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:.5in;margin-bottom:.0001pt'><span style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<h1><i>1) Not logged in <o:p></o:p></i></h1>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>From
the initial log in page (Main component) you can chose to click on the ‘search’
link and go directly to the search page (SearchPage component) without logging
into the app. The search page displays the results in a list (SearchResultPage
component) from which you can click on a listing to see the details
(ListingDetailPage component).<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>From
the main page you can also chose to create a new Customer (EditUserPage component).
<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
“Remember my password” checkbox tells the app to store your user information in
a cookie so that the next time you connect to the main page it automatically
logs you in.<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<h2>2) Logged in as a Customer</h2>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>To
see the full list of valid username/password combinations, you can open up
the<span style="mso-spacerun: yes">&nbsp; </span>RealEstate eomodel (in
/Library/Frameworks/JavaRealEstate.framework/Resources) and use the Data
Browser of EOModeler to look at the data for the User entity. Some valid username/password
combinations are <b>wocustomer/wocustomer</b></span><span style='font-size:
12.0pt'>, <b>afell/fells</b></span><span style='font-size:12.0pt'>, and <b>apark/parker</b></span><span
style='font-size:12.0pt'>.<o:p></o:p></span></p>

<p class=MsoBodyText><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>After
providing a valid login, the customer is taken to the home page (HomePage
component) where they can see a picture of their agent and the listings
recommended by the agent. Clicking on a listing takes them to the detail page.
The ‘Not for me’ link removes the listing.</p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
Search Property in this mode works the same as if the customer were not logged
in.<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Choose
Agent (ChooseAgentPage component) allows the customer to select a new agent.
Clicking on an agent’s name takes them to the Agent Detail page where you can
assign ratings and comments to a particular agent.<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
Personal Information page allows the updating of name, username, password, and
the adding/deleting of contact numbers.<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></span></p>

<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:.5in;margin-bottom:.0001pt'><span style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<h2>3) Logged in as an Agent</h2>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Valid
agent username/password combinations are <b>woagent/woagent</b></span><span
style='font-size:12.0pt'>, <b>sbass/basset</b></span><span style='font-size:
12.0pt'>, and <b>cches/chesterton</b></span><span style='font-size:12.0pt'>.
New agents can only be created by existing agents.<o:p></o:p></span></p>

<p class=MsoBodyText><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
Agent’s home page (HomePage component) display a list of customers and
properties they manage. </p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>To
recommend a property to a customer, the agent uses the search function for
properties and in the Listing Detail page they can specify a customer’s
username. The listing detail page for agents also allows the editing and
deleting of property information.<o:p></o:p></span></p>

<p class=MsoBodyText><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
Personal Information page for Agents is similar to the Customer one but adds
the functionality of setting a photo for the agent. Sample photos for agents
and properties can be found the the SampleImages directory of the project.</p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Agents
are also able to create new properties (EditListingPage component).<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<h2>4) Via a Direct Action</h2>

<p class=MsoNormal><span style='font-size:12.0pt'><span style='mso-tab-count:
1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
application defines a direct action called FindListings which can be used to
execute direct searches. The following example http request sends a direct
action request to search on listings in the state of CA with an upperLimitPrice
of $300000.<o:p></o:p></span></p>

<p class=MsoNormal style='margin:0in;margin-bottom:.0001pt'><span
style='font-size:12.0pt'>http://yourhostname/cgi-bin/WebObjects/iShacks.woa/wa/FindListings?state=CA&amp;upperLimitPrice=300000<o:p></o:p></span></p>

<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:.5in;margin-bottom:.0001pt'><span style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:.5in;margin-bottom:.0001pt'><span style='font-size:12.0pt'><span
style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><b>Technical Points of Interest:</b></span><span
style='font-size:12.0pt'><o:p></o:p></span></p>

<p><span style='font-size:12.0pt'>DirectAction.java<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This
class implements the direct action FindListings<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'>IshacksCookie.java<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This
subclass of WOCookie store the users name, username, and password. See
additional comments in the class file.<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'>ValidationAwareComponent.java<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This
is the superclass of EditListingPage and EditUserPage.<span
style="mso-spacerun: yes">&nbsp; </span>See additional comments in class file.<o:p></o:p></span></p>

<p><span style='font-size:12.0pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>

</div>

</body>

</html>