pjs/grendel/addressbook/addresscard/SelfTest.java

501 строка
18 KiB
Java

/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is the Grendel mail/news client.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are Copyright (C) 1997
* Netscape Communications Corporation. All Rights Reserved.
*
* Created: Lester Schueler <lesters@netscape.com>, 14 Nov 1997.
*/
package grendel.addressbook.addresscard;
import java.util.Enumeration;
public class SelfTest {
public SelfTest () {
}
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
//example #0
//List all cards and their attributes.
public static void main(String argv[]) {
//open the LDAP address card source ldap.infospace.com
ICardSource Four11AddressBook = new LDAP_Server ("ldap.whowhere.com");
//define the card query.
ITerm query = new TermEqual (new AC_Attribute ("sn", "Lester"));
//Define the attributes to return
String[] attributes = {"sn", "cn", "o", "mail", "city"};
//query the LDAP server.
ICardSet cardSet = Four11AddressBook.getCardSet (query, attributes);
//Sort the list.
String[] sortOrder = {"sn", "mail"};
cardSet.sort (sortOrder);
//Enumerate thru the cards.
for (Enumeration cardEnum = cardSet.getEnumeration(); cardEnum.hasMoreElements(); ) {
ICard card = (ICard) cardEnum.nextElement();
System.out.println ("==== Card ====");
IAttributeSet attrSet = card.getAttributeSet ();
//Enumerate thru the attributes.
for (Enumeration attEnum = attrSet.getEnumeration(); attEnum.hasMoreElements(); ) {
IAttribute attr = (IAttribute) attEnum.nextElement();
System.out.println ("Attr: " + attr.getName() + " = " + attr.getValue());
}
}
//AC_Sources close when they fall out of scope.
// LDAP_Server.close ();
}
/*
//example #1
//Tranfering card from LDAP server to local address book using an "AddressSet".
public static void main(String argv[]) {
//open the LDAP address card source
IAC_Source Four11AddressBook = new LDAP_Server ("ldap.whowhere.com");
// IAC_Source Four11AddressBook = new LDAP_Server ("lpad.four11.com", "lesters", "SecretPassword");
//Create the search
FullName
NickName
FirstName
MiddleName
LastName
Organization
Locality
Region
EmailAddress
Comment
HTMLMail
Title
PostOfficeBox
Address
ZipCode
Country
WorkPhone
HomePhone
FaxPhone
ConferenceAddress
ConferenceServer
DistinguishedName
TermEqual (AC_Attribute);
TermNotEqual (AC_Attribute);
TermGreaterThan (AC_Attribute);
TermGreaterThanOrEqual (AC_Attribute);
TermLessThan (AC_Attribute);
TermLessThanOrEqual (AC_Attribute);
// AB.Search.Term query = new TermOr ( new AC_Attribute ("givenname", "Lester"),
// new AC_Attribute ("xmozillanickname", "Les"));
ITerm query = new TermEqual (new AC_Attribute ("sn", "Lester"));
//Define the attributes to return
// String[] attributes = {"givenname", "surname", "o", "mail"};
String[] attributes = {"cn", "o", "mail"};
String[] sortOrder = {"givenname", "surname"};
//query the LDAP server.
AC_Set cardSet = Four11AddressBook.getCardSet (query, attributes);
//Sort the list.
cardSet.sort (sortOrder);
//print the list of cards and their attributes.
for (Enumeration cardEnum = cardSet.getCardEnumeration(); cardEnum.hasMoreElements(); ) {
AC card = (AC) cardEnum.nextElement();
System.out.println ("==== Card ====");
AC_AttributeSet attrSet = card.getAttributeSet ();
for (Enumeration attEnum = attrSet.elements(); attEnum.hasMoreElements(); ) {
AC_Attribute attr = (AC_Attribute) attEnum.nextElement();
System.out.println ("Attr: Name = " + attr.getName() + " Value = " + attr.getValue());
}
}
//open the local address card source
// (true = create if needed)
ACS_Personal myLocalAddressBook = new ACS_Personal ("MyAddressBook.nab", true);
//copy over the address cards
// true = overwrite if collision)
myLocalAddressBook.add (cardSet, true);
//AC_Sources close when they fall out of scope.
myLocalAddressBook.close ();
}
//example #2
//Transfer cards from LDAP server to local address book using enumeration.
main () {
//open the LDAP address card source
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
//Create the search
AB.Search.Term query = new TermOr ( new AC_Attribute ("givenname", "Lester"),
new AC_Attribute ("xmozillanickname", "Les"));
//Define the attributes to return
String[] attributes = {"givenname", "surname", "o", "mail"};
//open the local address card source
// (true = create if needed)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
//query the LDAP server.
for (Enumeration enum = Four11AddressBook.getCardEnumeration (query, attributes); enum.hasMoreElements() ;) {
AC card = (AC_) enum.nextElement();
//only copy the netscape people.
if (true == card.getAttribute ("o").getValue().equals ("Netscape")) {
// true = overwrite if collision)
myLocalAddressBook.add (card, true);
}
}
//AC_Sources close when they fall out of scope.
}
//example #3
//Transfer cards from LDAP server to local address book using an "AddressList" and enumeration.
main () {
//open the LDAP address card source
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
//Create the search
AB.Search.Term query = new OrTerm ( new AC_Attribute ("givenname", "Lester"),
new AC_Attribute ("xmozillanickname", "Les"));
//Define the attributes to return
String[] attributes = {"givenname", "surname", "o", "mail"};
String[] sortOrder = {"givenname", "surname"};
//query the LDAP server.
AC_Set cardSet = Four11AddressBook.getCardSet (query, attributes);
//Sort the list.
cardSet.sort (sortOrder);
//open the local address card source
// (true = create if needed)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
//Step thru the card list.
for (Enumeration enum = cardSet.getCardEnumeration (); enum.hasMoreElements() ;) {
AC card = (AC) enum.nextElement();
//only copy netscape people.
if (true == card.getAttribute ("o").equals ("Netscape")) {
// true = overwrite if collision)
myLocalAddressBook.add (card, true);
}
}
//AC_Sources close when they fall out of scope.
}
//example #4
//Deleting card from the local addres book
main () {
//open the local address card source
// (false = fail if not already created)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", false);
AB.Search.Term query = new AC_Attribute ("givenname", "Lester");
//query the AC_Source
AC_Set cardSet = myLocalAddressBook.getCardSet (query);
//delete the cards
myLocalAddressBook.delete(cardSet);
//AC_Sources close when they fall out of scope.
}
//example #5
//Tranfering card from LDAP server to local address book using enumeration and collision detection.
main () {
//open the LDAP address card source
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
//Create the search
AB.Search.Term query = new AC_Attribute ("givenname", "Lester");
//open the local address card source
// (true = create if needed)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
//query the LDAP server.
for (Enumeration enum = Four11AddressBook.getCardEnumeration (query, attributes); enum.hasMoreElements() ;) {
try {
// false = throw exception if collision
myLocalAddressBook.add ((AC_) enum.nextElement(), false);
// Alternate form (test the set).
// if (false == myLocalAddressBook.willOverwrite ((AC_) enum.nextElement())) {
// myLocalAddressBook.add ((AC_) enum.nextElement(). false);
// }
} catch (CardOverwriteException coe) {
}
}
//AC_Sources close when they fall out of scope.
}
//example #6
//Find all the attributes of a card source?
main () {
//open the LDAP address card source
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
AC_AttributeSet attrs = Four11AddressBook.getAttributeSet();
for (Enumeration enumAttrs = attrs.getAttributes(); ; enumAttrs.hasMoreElements() ;) {
AC_Attribute anAttr = (AC_Attribute) enumAttrs.nextElement();
System.out.println( "Attribute Name: " + anAttr.getName() );
}
//AC_Sources close when they fall out of scope.
}
//example #7
//Update the two address books
main () {
//open the LDAP address card source
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
//open the local address card source
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
//update the local address book from the LDAp server.
myLocalAddressBook.update (Four11AddressBook);
//update the LDAP server from the local address book.
Four11AddressBook.update (myLocalAddressBook);
//AC_Sources close when they fall out of scope.
}
//example #8
//Transfer cards from serveral LDAP servers to local address book using an "AddressSet".
main () {
//open the LDAP address card source
AC_SourceSet lpadServers = new AC_SourceSet();
//add the LDAP servers to the set. Order is important.
lpadServers.add (new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword"));
lpadServers.add (new LDAPServer ("lpad.infoseek.com", null, null));
//get all cards that have a department of "k8040" or "K8050".
Term query = new AC_Attribute ("xdepartment", {"k8040", "k8050"});
//Define the attributes to return
String[] attributes = {"givenname", "surname", "o", "mail", "xdepartment"};
//query the LDAP servers.
AC_Set cardSet = lpadServers.getCardSet (query, attributes);
//open the local address card source
// (true = create if needed)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
//copy over the address cards
// true = overwrite if collision)
myLocalAddressBook.add (cardSet, true);
//AC_Sources close when they fall out of scope.
}
//example #9
//Add a new card to the local address book then change it then delete it.
main () {
//Define the attributes to return
String[] attributes = {"givenname", "surname", "o", "mail"};
//open the local address card source
// (true = create if needed)
AC_Source myLocalAddressBook = new LocalStore ("MyAddressBook.nab", true);
AC newCard = new AC ();
newCard.add (new AC_Attribute ("givenname", "Robert"));
newCard.add (new AC_Attribute ("mail", "robert@ford.com"));
newCard.add (new AC_Attribute ("o", "Ford Motor Company"));
newCard.add (new AC_Attribute ("ou", "Audio"));
newCard.add (new AC_Attribute ("c", "US"));
//try to store the new card
try {
myLocalAddressBook.addCard (newCard);
}
catch (AC_Exception ace) {
//1) No write access to DB
//2) All required attributes not provided
//3) Network connection down
//4) Card already in DB
}
//try to change the card
try {
newCard.updateAttribute ("ou", "Electronics Division");
myLocalAddressBook.updateCard (newCard);
}
catch (AC_Exception ace) {
//1) No write access to DB or this card.
//2) All required attributes not provided
//3) Network connection down
}
//try to delete an attribute from the card
try {
newCard.deleteAttribute ("ou");
myLocalAddressBook.updateCard (newCard);
}
catch (AC_Exception ace) {
//1) No write access to DB or this card
//2) Network connection down
//3) Card NOT in DB
}
//try to delete the card
try {
myLocalAddressBook.deleteCard (newCard);
}
catch (AC_Exception ace) {
//1) No write access to DB or this card
//2) Network connection down
//3) Card NOT in DB
}
//AC_Sources close when they fall out of scope.
}
//example #
//List all cards and their attributes.
public static void main(String argv[]) {
//open the LDAP address card source
IAC_Source Four11AddressBook = new LDAP_Server ("ldap.whowhere.com");
//define the card query.
ITerm query = new TermEqual (new AC_Scope ("ObjectType", "Room"));
AB.Search.Term query = new AC_Attribute ("objectclass", "resource");
AB.Search.Term query = new AC_Attribute ("objectclass", "person");
//All object of type room on the second floor.
ITerm query = new AC_Scope ("Room", new TermEqual (new AC_Attribute ("Floor", "2")));
//Define the attributes to return
String[] attributes = {"cn", "o", "mail"};
String[] sortOrder = {"givenname", "surname"};
//query the LDAP server.
AC_Set cardSet = Four11AddressBook.getCardSet (query, attributes);
//Sort the list.
cardSet.sort (sortOrder);
//Enumerate thru the cards.
for (Enumeration cardEnum = cardSet.getCardEnumeration(); cardEnum.hasMoreElements(); ) {
AC card = (AC) cardEnum.nextElement();
System.out.println ("==== Card ====");
AC_AttributeSet attrSet = card.getAttributeSet ();
//Enumerate thru the attributes.
for (Enumeration attEnum = attrSet.elements(); attEnum.hasMoreElements(); ) {
AC_Attribute attr = (AC_Attribute) attEnum.nextElement();
System.out.println ("Attr: Name = " + attr.getName() + " Value = " + attr.getValue());
}
}
//AC_Sources close when they fall out of scope.
// LDAP_Server.close ();
}
public static void main() {
try {
AC_Source Four11AddressBook = new LDAPServer ("lpad.four11.com", "lesters", "SecretPassword");
// search for all entries with surname of Jensen
String MY_FILTER = "sn=lester";
// String MY_SEARCHBASE = "o=Ace Industry, c=US";
String MY_SEARCHBASE = "c=US";
LDAPSearchConstraints cons = ld.getSearchConstraints();
cons.setBatchSize( 1 );
AC_Set cardSet = ld.search( MY_SEARCHBASE,
MY_FILTER,
null,
false,
cons );
// Loop on results until finished
while ( cardSet.hasMoreElements() ) {
// Next entry
AC card = cardSet.nextElement();
// Get the attributes of the entry
AC_AttributeSet attrs = card.getAttributeSet();
Enumeration enumAttrs = attrs.getAttributes();
// Loop on attributes
while ( enumAttrs.hasMoreElements() ) {
AC_Attribute anAttr = (AC_Attribute) enumAttrs.nextElement();
String attrName = anAttr.getName();
System.out.println( "\t\t" + attrName );
// Loop on values for this attribute
Enumeration enumVals = anAttr.getStringValues();
while ( enumVals.hasMoreElements() ) {
String aVal = ( String )enumVals.nextElement();
System.out.println( "\t\t\t" + aVal );
}
}
}
}
catch( Exception e ) {
System.out.prin
*/
}