The Object Model for AraraThis is our recomendation for the model of arara.
Sugestions are very welcome preferably before release: 2.0-a1-fine - To send suggestions, either send an email to any of the mailing lists or post an issue to our issue tracker by clicking on the "Issue Tracking" link on the menu. IntroductionThe first idea was to use torque as our persistnce layer. Torque works very well so this shouldn't be a problem. The thing is, if we want to change persistence layer, we must re-write loads of code. We added a new layer (tire for n-tire) by acessing our model via interfaces. We will still stick to torque for our persistence layer, but acess it via the set of interfaces defined. Interface layerWe provide a layer to our object model to enable the abstraction of the real persistence layer.
So, taking the example of an Object in our model representing
On the diagram bellow you can view the model for this layer using a torque implementation of Artifact
Our model resides on the br.usp.ime.arca.arara.om package. A listing of our objects and a short description is provided below. Implementation using torqueAlthought we are free of the implementation for the persistence layer, we still need to provide one. We stick with the initial idea of using torque. The schema used for torque can be viewed in html format arara-schema.html or inline xml pasted in on: May-02-2002. You can also refer to the cvs file arara-schema.xml for the latest updates.
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE database SYSTEM
"http://jakarta.apache.org/turbine/dtd/database.dtd">
<database
name="arara"
>
<table
name="ARARA_ARTIFACT"
javaName="Artifact"
interface="InterfaceArtifact"
idMethod="idbroker"
description="Artifact"
>
<column
name="ARTIFACT_ID"
required="true"
primaryKey="true"
type="INTEGER"
description="Unique identifier"
>
</column>
</table>
<table
name="ARARA_ATTACHMENT"
javaName="Attachment"
interface="InterfaceAttachment"
idMethod="idbroker"
description="Piece of information associated to an artifact"
>
<column
name="ATTACHMENT_ID"
primaryKey="true"
required="true"
type="INTEGER"
description="Unique identifier"
>
</column>
<column
name="ARTIFACT_ID"
required="false"
type="INTEGER"
description="Artifact this attachment is related to"
>
</column>
<column
name="ATTACHMENT_TYPE_ID"
javaName="TypeId"
required="true"
type="INTEGER"
description="Type of attachment"
>
</column>
<column
name="ATTACHMENT_NAME"
javaName="Name"
required="true"
type="VARCHAR"
size="255"
description="Name displayed on the UI"
>
</column>
<column
name="ATTACHMENT_DATA"
javaName="Data"
required="false"
type="VARBINARY"
description="Actual information constitutin the attachment"
>
</column>
<column
name="ATTACHMENT_FILE_PATH"
javaName="FileName"
required="false"
type="VARCHAR"
size="255"
description="Server side location of the file (relative to the central file storage"
>
</column>
<column
name="ATTACHMENT_MIME_TYPE"
javaName="MimeType"
required="true"
type="VARCHAR"
size="25"
description="MIME type of attachment"
>
</column>
<column
name="MODIFIED_BY"
required="false"
type="INTEGER"
description="Person that made last modification"
>
</column>
<column
name="CREATED_BY"
required="false"
type="INTEGER"
description="person that created the attachment"
>
</column>
<column
name="MODIFIED_DATE"
required="false"
type="TIMESTAMP"
description="Last modification date"
>
</column>
<column
name="CREATED_DATE"
required="false"
type="TIMESTAMP"
description="Creation date"
>
</column>
<column
name="DELETED"
required="false"
type="BOOLEANINT"
default="0"
size="1"
description="Flag marking if it was deleted"
>
</column>
<foreign-key
foreignTable="ARARA_ARTIFACT"
name="ARTIFACT_FK"
onUpdate="none"
onDelete="none"
>
<reference
local="ARTIFACT_ID"
foreign="ARTIFACT_ID"
/>
</foreign-key>
<foreign-key
foreignTable="ARARA_ATTACHMENT_TYPE"
name="ATTACHMENT_TYPE_FK"
onUpdate="none"
onDelete="none"
>
<reference
local="ATTACHMENT_TYPE_ID"
foreign="ATTACHMENT_TYPE_ID"
/>
</foreign-key>
<foreign-key
foreignTable="ARARA_USER"
name="CREATED_BY_FK"
onUpdate="none"
onDelete="none"
>
<reference
local="CREATED_BY"
foreign="USER_ID"
/>
</foreign-key>
<foreign-key
foreignTable="ARARA_USER"
name="MODIFIED_BY_FK"
onUpdate="none"
onDelete="none"
>
<reference
local="MODIFIED_BY"
foreign="USER_ID"
/>
</foreign-key>
</table>
<table
name="ARARA_USER"
javaName="AraraUser"
alias="TurbineUser"
baseClass="org.apache.fulcrum.security.impl.db.entity.TurbineUser"
basePeer="org.apache.fulcrum.security.impl.db.entity.TurbineUserPeer"
interface="InterfaceAraraUser"
description="User"
>
<column
name="USER_ID"
primaryKey="true"
required="true"
type="INTEGER"
description="Unique identifier"
>
</column>
</table>
<table
name="ARARA_ATTACHMENT_TYPE"
idMethod="idbroker"
javaName="AttachmentType"
interface="InterfaceAttachmentType"
description="Possible types of attachments (ie: Comment, File)"
>
<column
name="ATTACHMENT_TYPE_ID"
primaryKey="true"
required="true"
type="INTEGER"
description="Unique identifier"
>
</column>
<column
name="ATTACHMENT_TYPE_NAME"
javaName="Name"
required="true"
type="VARCHAR"
size="255"
description="type name"
>
</column>
<column
name="SEARCHABLE"
default="0"
type="BOOLEANINT"
size="1"
description="Flag marking a text searchable attachment"
>
</column>
</table>
</database>
|