-------- Original Message -------- Subject: mapping associations(1:1,1:n) seems not working with Oracle9i Date: Thu, 6 May 2004 22:31:45 +0100 From: Carla Avelans <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>
Hi,
I’m using OJB (db-ojb-1.0.rc5) to access Oracle9i (Windows XP) and I have problems retrieving the data (Value Objects=VO)
Assigned to the mapping associations i.e. I get a null value because the n-side objects (or single object for 1:1) are not materialized.
The strange thing is that the application works with MySQL, which makes me think that OJB is not working well with Oracle.
I searched for all possible settings defining the “reference descriptor” and “collection descriptor” elements and it did not work.
For instance set the attribute “auto-retrieve=true” and also manually (“auto-retrieve=false”) using the PersistenceBroker.retrieveAllReferences method.
Below I’m describing the steps I took and you also can find some pieces of my application code and OJB configuration files.
The Model sample I describe is the following: I have a table C_LOADER that has a 1:1 relationship with table C_INTEGRATION,
in other hand C_INTEGRATION has 1:n relationship with C_LOADER. I want to query the table C_LOADER and also get the
integrationName assigned to the loader.
1) I generated the VOs and the repository files using the torque version 3.1 and I copied them (from /ojb folder) to my source folder.
2) I updated “repository.xml”:
<jdbc-connection-descriptor id="default"
jcd-alias="default"
default-connection="true"
platform="Oracle9i"
jdbc-level="2.0"
driver="oracle.jdbc.driver.OracleDriver"
protocol="jdbc"
subprotocol="oracle"
dbalias="thin:@rammstein.critical.pt:1521:dws"
username="pmdev"
password="pms"
eager-release="false"
batch-mode="false"
ignoreAutoCommitExceptions="false">
</jdbc-connection-descriptor>
3) I changed the “repository_project.xml” and the VO java classes to include the necessary foreign keys elements, reference and collection descriptors. (NOTE: Torque generated the schema_project.xml describing the tables, columns and foreign keys but it did not include the foreign keys/fields in the VO java classes).
<class-descriptor
class="vo.CLoader"
table="C_LOADER"
>
<field-descriptor id="1"
name="loaderid"
column="LOADERID"
jdbc-type="INTEGER"
nullable="false"
primarykey="true"
/>
<field-descriptor id="2"
name="integrationid"
column="INTEGRATIONID"
jdbc-type="INTEGER"
/>
<field-descriptor id="3"
name="description"
column="DESCRIPTION"
jdbc-type="VARCHAR"
/>
<!--Relation 1:1 with table C_Integration-->
<reference-descriptor
name="loadIntegration"
class-ref="vo.CIntegration"
auto-retrieve = "true"
auto-delete = "false"
auto-update = "false"
nullieforeignkey="false">
<foreignkey field-ref="integrationid"
/>
</reference-descriptor>
</class-descriptor>
--------------------------------------------------------------------------------------------------
<class-descriptor
class="vo.CIntegration"
table="C_INTEGRATION"
>
<field-descriptor id="1"
name="integrationid"
column="INTEGRATIONID"
jdbc-type="DECIMAL"
nullable="false"
primarykey="true"
/>
<field-descriptor id="2"
name="intname"
column="INTNAME"
jdbc-type="VARCHAR"
nullable="false"
/>
<!--Relation 1:n with table C_loaders-->
<collection-descriptor
name="loadersInIntegration"
element-class-ref="vo.CLoader"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
orderby="loaderid"
sort="DESC">
<inverse-foreignkey field-ref="integrationid"/>
</collection-descriptor>
</class-descriptor>
4) The VO java classe C_LOADER and C_INTEGRATION
public class CLoader
{
private Integer loaderid;
private Integer integrationid;
private CIntegration loadIntegration;
public Integer getLoaderid()
{
return loaderid;
}
public void setLoaderid(Integer v)
{
this.loaderid = v;
}
public Integer getIntegrationid()
{
return integrationid;
}
public void setIntegrationid(Integer v)
{
this.integrationid = v;
}
public CIntegration getLoadIntegration()
{
return loadIntegration;
}
public void setLoadIntegration(CIntegration v)
{
this.loadIntegration = v;
}
}
----------------------------------------------------------------------------------------------------------
public class CIntegration
{
private BigDecimal integrationid;
private String intname;
private Collection loadersInIntegration;
public BigDecimal getIntegrationid()
{
return integrationid;
}
public void setIntegrationid(BigDecimal v)
{
this.integrationid = v;
}
public String getIntname()
{
return intname;
}
public void setIntname(String v)
{
this.intname = v;
}
public Collection getLoadersInIntegration(){
return loadersInIntegration;
}
public boolean hasLoaders()
{
return (this.getLoadersInIntegration().size() > 0)?true:false;
}
}
5) Application source and the invocation of the VO Cloader (1:1 relation with CIntegration).
It prints out the LOADERID and “DID Not Work!!” when it tries to access to the associated Cintegration VO L
public Collection getLoaderList() {
// List all the rows from table C_Loaders
PersistenceBroker broker = null;
try {
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
CLoader loader = new CLoader();
// Query all the rows without criteria
QueryByCriteria query = new QueryByCriteria(loader);
Collection loaderListCol = broker.getCollectionByQuery(query);
Iterator it = loaderListCol.iterator();
while (it.hasNext()) {
CLoader loaderField = (CLoader) it.next();
// get loaderid
System.out.println("LOADERID: " + loaderField.getLoaderid().toString() );
// get integartion name
CIntegration integrationVO = loaderField.getLoadIntegration();
if (integrationVO == null){
System.out.println("DID not Work!!");
}
else {
System.out.println("INTNAME: " + integrationVO.getIntname() );
}
return loaderListCol;
} finally {
if (broker != null) {
broker.close();
}
}
}
I would really appreciate any help.
Thanks in advance and kind regards,
Carla Avelans
<!-- ============================================================== TABLE c_group ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroup" table="c_group" > <!-- COLUMN GROUPID .............................................. --> <field-descriptor id="1" name="groupid" column="GROUPID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN INTEGRATIONID .............................................. --> <field-descriptor id="2" name="integrationid" column="INTEGRATIONID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN GROUPNAME .............................................. --> <field-descriptor id="3" name="groupname" column="GROUPNAME" jdbc-type="VARCHAR" /> <!-- COLUMN RELEASE .............................................. --> <field-descriptor id="4" name="release" column="RELEASE" jdbc-type="VARCHAR" /> <!-- COLUMN LONGNAME .............................................. --> <field-descriptor id="5" name="longname" column="LONGNAME" jdbc-type="VARCHAR" /> <!-- COLUMN GROUPDBID .............................................. --> <field-descriptor id="6" name="groupdbid" column="GROUPDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN POS_PROCEDURE .............................................. --> <field-descriptor id="7" name="posProcedure" column="POS_PROCEDURE" jdbc-type="VARCHAR" /> <!-- COLUMN VAL_PROCEDURE .............................................. --> <field-descriptor id="8" name="valProcedure" column="VAL_PROCEDURE" jdbc-type="VARCHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="9" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="10" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> </class-descriptor> <!-- ============================================================== TABLE c_groupitemdb ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroupitemdb" table="c_groupitemdb" > <!-- COLUMN ITEMDBID .............................................. --> <field-descriptor id="1" name="itemdbid" column="ITEMDBID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN GROUPDBID .............................................. --> <field-descriptor id="2" name="groupdbid" column="GROUPDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN ITEMNAME .............................................. --> <field-descriptor id="3" name="itemname" column="ITEMNAME" jdbc-type="VARCHAR" /> <!-- COLUMN LONGNAME .............................................. --> <field-descriptor id="4" name="longname" column="LONGNAME" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMUNIT .............................................. --> <field-descriptor id="5" name="itemunit" column="ITEMUNIT" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMTYPE .............................................. --> <field-descriptor id="6" name="itemtype" column="ITEMTYPE" jdbc-type="CHAR" /> <!-- COLUMN ITEMDATATYPE .............................................. --> <field-descriptor id="7" name="itemdatatype" column="ITEMDATATYPE" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMKEY .............................................. --> <field-descriptor id="8" name="itemkey" column="ITEMKEY" jdbc-type="DECIMAL" /> <!-- COLUMN ITEMORDER .............................................. --> <field-descriptor id="9" name="itemorder" column="ITEMORDER" jdbc-type="DECIMAL" /> <!-- COLUMN DESCRIPTION .............................................. --> <field-descriptor id="10" name="description" column="DESCRIPTION" jdbc-type="LONGVARCHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="11" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="12" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> </class-descriptor> <!-- ============================================================== TABLE c_groupitemmap ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroupitemmap" table="c_groupitemmap" > <!-- COLUMN ITEMDBID .............................................. --> <field-descriptor id="1" name="itemdbid" column="ITEMDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN GROUPID .............................................. --> <field-descriptor id="2" name="groupid" column="GROUPID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN EXPRESSION .............................................. --> <field-descriptor id="3" name="expression" column="EXPRESSION" jdbc-type="LONGVARCHAR" /> <!-- COLUMN DEFAULTVALUE .............................................. --> <field-descriptor id="4" name="defaultvalue" column="DEFAULTVALUE" jdbc-type="DECIMAL" /> <!-- COLUMN MAPTYPE .............................................. --> <field-descriptor id="5" name="maptype" column="MAPTYPE" jdbc-type="CHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="6" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="7" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> <!-- COLUMN MAPPING .............................................. --> <field-descriptor id="8" name="mapping" column="MAPPING" jdbc-type="LONGVARCHAR" /> </class-descriptor> <!-- ============================================================== TABLE c_integration ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CIntegration" table="c_integration" > <!-- COLUMN integrationid .............................................. --> <field-descriptor id="1" name="integrationid" column="integrationid" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN intname .............................................. --> <field-descriptor id="2" name="intname" column="intname" jdbc-type="VARCHAR" nullable="false" /> <!-- COLUMN intype .............................................. --> <field-descriptor id="3" name="intype" column="intype" jdbc-type="VARCHAR" nullable="false" /> <!-- COLUMN domain .............................................. --> <field-descriptor id="4" name="domain" column="domain" jdbc-type="VARCHAR" /> <!-- COLUMN supportedby .............................................. --> <field-descriptor id="5" name="supportedby" column="supportedby" jdbc-type="VARCHAR" /> <!-- COLUMN description .............................................. --> <field-descriptor id="6" name="description" column="description" jdbc-type="VARCHAR" /> <!-- COLUMN homedirectory .............................................. --> <field-descriptor id="7" name="homedirectory" column="homedirectory" jdbc-type="VARCHAR" /> <!-- COLUMN owners .............................................. --> <field-descriptor id="8" name="owners" column="owners" jdbc-type="VARCHAR" /> <!-- COLUMN mailinglist .............................................. --> <field-descriptor id="9" name="mailinglist" column="mailinglist" jdbc-type="VARCHAR" /> <!-- COLUMN intgroup .............................................. --> <field-descriptor id="10" name="intgroup" column="intgroup" jdbc-type="VARCHAR" /> <!-- COLUMN status .............................................. --> <field-descriptor id="11" name="status" column="status" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN statuslastdate .............................................. --> <field-descriptor id="12" name="statuslastdate" column="statuslastdate" jdbc-type="DATE" nullable="false" /> </class-descriptor> <!-- ============================================================== TABLE c_loader ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CLoader" table="c_loader" > <!-- COLUMN LOADERID .............................................. --> <field-descriptor id="1" name="loaderid" column="LOADERID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN INTEGRATIONID .............................................. --> <field-descriptor id="2" name="integrationid" column="INTEGRATIONID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN DESCRIPTION .............................................. --> <field-descriptor id="3" name="description" column="DESCRIPTION" jdbc-type="VARCHAR" /> <!-- COLUMN FREQUENCY .............................................. --> <field-descriptor id="4" name="frequency" column="FREQUENCY" jdbc-type="VARCHAR" /> <!-- COLUMN EXECUTE .............................................. --> <field-descriptor id="5" name="execute" column="EXECUTE" jdbc-type="LONGVARCHAR" /> <!-- COLUMN LOADERDIR .............................................. --> <field-descriptor id="6" name="loaderdir" column="LOADERDIR" jdbc-type="LONGVARCHAR" /> <!-- COLUMN LOGLEVEL .............................................. --> <field-descriptor id="7" name="loglevel" column="LOGLEVEL" jdbc-type="DECIMAL" /> <!-- COLUMN LOGFILE .............................................. --> <field-descriptor id="8" name="logfile" column="LOGFILE" jdbc-type="VARCHAR" /> <!-- COLUMN ACTIVE .............................................. --> <field-descriptor id="9" name="active" column="ACTIVE" jdbc-type="DECIMAL" /> </class-descriptor>
<!-- ============================================================== TABLE c_group ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroup" table="c_group" > <!-- COLUMN GROUPID .............................................. --> <field-descriptor id="1" name="groupid" column="GROUPID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN INTEGRATIONID .............................................. --> <field-descriptor id="2" name="integrationid" column="INTEGRATIONID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN GROUPNAME .............................................. --> <field-descriptor id="3" name="groupname" column="GROUPNAME" jdbc-type="VARCHAR" /> <!-- COLUMN RELEASE .............................................. --> <field-descriptor id="4" name="release" column="RELEASE" jdbc-type="VARCHAR" /> <!-- COLUMN LONGNAME .............................................. --> <field-descriptor id="5" name="longname" column="LONGNAME" jdbc-type="VARCHAR" /> <!-- COLUMN GROUPDBID .............................................. --> <field-descriptor id="6" name="groupdbid" column="GROUPDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN POS_PROCEDURE .............................................. --> <field-descriptor id="7" name="posProcedure" column="POS_PROCEDURE" jdbc-type="VARCHAR" /> <!-- COLUMN VAL_PROCEDURE .............................................. --> <field-descriptor id="8" name="valProcedure" column="VAL_PROCEDURE" jdbc-type="VARCHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="9" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="10" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> </class-descriptor> <!-- ============================================================== TABLE c_groupitemdb ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroupitemdb" table="c_groupitemdb" > <!-- COLUMN ITEMDBID .............................................. --> <field-descriptor id="1" name="itemdbid" column="ITEMDBID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN GROUPDBID .............................................. --> <field-descriptor id="2" name="groupdbid" column="GROUPDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN ITEMNAME .............................................. --> <field-descriptor id="3" name="itemname" column="ITEMNAME" jdbc-type="VARCHAR" /> <!-- COLUMN LONGNAME .............................................. --> <field-descriptor id="4" name="longname" column="LONGNAME" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMUNIT .............................................. --> <field-descriptor id="5" name="itemunit" column="ITEMUNIT" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMTYPE .............................................. --> <field-descriptor id="6" name="itemtype" column="ITEMTYPE" jdbc-type="CHAR" /> <!-- COLUMN ITEMDATATYPE .............................................. --> <field-descriptor id="7" name="itemdatatype" column="ITEMDATATYPE" jdbc-type="VARCHAR" /> <!-- COLUMN ITEMKEY .............................................. --> <field-descriptor id="8" name="itemkey" column="ITEMKEY" jdbc-type="DECIMAL" /> <!-- COLUMN ITEMORDER .............................................. --> <field-descriptor id="9" name="itemorder" column="ITEMORDER" jdbc-type="DECIMAL" /> <!-- COLUMN DESCRIPTION .............................................. --> <field-descriptor id="10" name="description" column="DESCRIPTION" jdbc-type="LONGVARCHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="11" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="12" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> </class-descriptor> <!-- ============================================================== TABLE c_groupitemmap ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CGroupitemmap" table="c_groupitemmap" > <!-- COLUMN ITEMDBID .............................................. --> <field-descriptor id="1" name="itemdbid" column="ITEMDBID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN GROUPID .............................................. --> <field-descriptor id="2" name="groupid" column="GROUPID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN EXPRESSION .............................................. --> <field-descriptor id="3" name="expression" column="EXPRESSION" jdbc-type="LONGVARCHAR" /> <!-- COLUMN DEFAULTVALUE .............................................. --> <field-descriptor id="4" name="defaultvalue" column="DEFAULTVALUE" jdbc-type="DECIMAL" /> <!-- COLUMN MAPTYPE .............................................. --> <field-descriptor id="5" name="maptype" column="MAPTYPE" jdbc-type="CHAR" /> <!-- COLUMN STATUS .............................................. --> <field-descriptor id="6" name="status" column="STATUS" jdbc-type="DECIMAL" /> <!-- COLUMN STATUSLASTDATE .............................................. --> <field-descriptor id="7" name="statuslastdate" column="STATUSLASTDATE" jdbc-type="TIMESTAMP" /> <!-- COLUMN MAPPING .............................................. --> <field-descriptor id="8" name="mapping" column="MAPPING" jdbc-type="LONGVARCHAR" /> </class-descriptor> <!-- ============================================================== TABLE c_integration ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CIntegration" table="c_integration" > <!-- COLUMN integrationid .............................................. --> <field-descriptor id="1" name="integrationid" column="integrationid" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN intname .............................................. --> <field-descriptor id="2" name="intname" column="intname" jdbc-type="VARCHAR" nullable="false" /> <!-- COLUMN intype .............................................. --> <field-descriptor id="3" name="intype" column="intype" jdbc-type="VARCHAR" nullable="false" /> <!-- COLUMN domain .............................................. --> <field-descriptor id="4" name="domain" column="domain" jdbc-type="VARCHAR" /> <!-- COLUMN supportedby .............................................. --> <field-descriptor id="5" name="supportedby" column="supportedby" jdbc-type="VARCHAR" /> <!-- COLUMN description .............................................. --> <field-descriptor id="6" name="description" column="description" jdbc-type="VARCHAR" /> <!-- COLUMN homedirectory .............................................. --> <field-descriptor id="7" name="homedirectory" column="homedirectory" jdbc-type="VARCHAR" /> <!-- COLUMN owners .............................................. --> <field-descriptor id="8" name="owners" column="owners" jdbc-type="VARCHAR" /> <!-- COLUMN mailinglist .............................................. --> <field-descriptor id="9" name="mailinglist" column="mailinglist" jdbc-type="VARCHAR" /> <!-- COLUMN intgroup .............................................. --> <field-descriptor id="10" name="intgroup" column="intgroup" jdbc-type="VARCHAR" /> <!-- COLUMN status .............................................. --> <field-descriptor id="11" name="status" column="status" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN statuslastdate .............................................. --> <field-descriptor id="12" name="statuslastdate" column="statuslastdate" jdbc-type="DATE" nullable="false" /> </class-descriptor> <!-- ============================================================== TABLE c_loader ============================================================== --> <class-descriptor class="com.criticalsoftware.vodafone.pmsloaderadmin.vo.CLoader" table="c_loader" > <!-- COLUMN LOADERID .............................................. --> <field-descriptor id="1" name="loaderid" column="LOADERID" jdbc-type="DECIMAL" nullable="false" primarykey="true" /> <!-- COLUMN INTEGRATIONID .............................................. --> <field-descriptor id="2" name="integrationid" column="INTEGRATIONID" jdbc-type="DECIMAL" nullable="false" /> <!-- COLUMN DESCRIPTION .............................................. --> <field-descriptor id="3" name="description" column="DESCRIPTION" jdbc-type="VARCHAR" /> <!-- COLUMN FREQUENCY .............................................. --> <field-descriptor id="4" name="frequency" column="FREQUENCY" jdbc-type="VARCHAR" /> <!-- COLUMN EXECUTE .............................................. --> <field-descriptor id="5" name="execute" column="EXECUTE" jdbc-type="LONGVARCHAR" /> <!-- COLUMN LOADERDIR .............................................. --> <field-descriptor id="6" name="loaderdir" column="LOADERDIR" jdbc-type="LONGVARCHAR" /> <!-- COLUMN LOGLEVEL .............................................. --> <field-descriptor id="7" name="loglevel" column="LOGLEVEL" jdbc-type="DECIMAL" /> <!-- COLUMN LOGFILE .............................................. --> <field-descriptor id="8" name="logfile" column="LOGFILE" jdbc-type="VARCHAR" /> <!-- COLUMN ACTIVE .............................................. --> <field-descriptor id="9" name="active" column="ACTIVE" jdbc-type="DECIMAL" /> </class-descriptor>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]