Domanda

Sto usando @Niglielookup Formula per recuperare l'indirizzo internet dando una chiave di ricerca e funziona bene. Ma ora voglio recuperare non solo l'indirizzo Internet ma anche alcune altre proprietà come il nome e il lastname. Ecco la formula che sto usando a @Namelookup internet Indirizzo dando la stringa di ricerca.

Vector vec=m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"InternetAddress\")");
.

// Nome utente è la variabile stringa (criteri di ricerca)

Qualcuno può aiutare a recuperare più proprietà (come il nome e il lastName insieme a InternetAddress) valutando la formula solo una volta.Se non riesce a fare usando @Namelookup c'è qualche altro modo ..?

È stato utile?

Soluzione

Questo è un esempio tipico quando si utilizza valuta () per chiamare una formula non è una buona idea. Quello che vuoi fare è ottenere la classe di NotesDocument e leggere i valori da esso.

Qualcosa come questo (Disclaimer, non sono uno sviluppatore Java):

// Open Domino Directory on specified server
Database db = session.getDatabase("YourServer/Domain", "names.nsf");
// Get a view with user name is sorted first column
View view = db.getView("($Users)");
// Get the person document for specified user
Document doc = view.getDocumentByKey(userName, true);
if (doc != null) {
   // Get text values from Notes document
   String emailAddress = doc.getItemValueString("InternetAddress");
   String officePhone = doc.getItemValueString("OfficeNumber");
   String officeAddress = doc.getItemValueString("OfficeStreetAddress");
}
.

Credo che questo sarebbe più veloce di più ricerche che usano valutando () e hai anche il vantaggio aggiuntivo della gestione completa degli errori e tutto il codice nativo.

Altri suggerimenti

@NameLookup restituisce solo il valore di un articolo per chiamata.

Supponendo che il tuo obiettivo sia solo avere una dichiarazione di valutazione, è possibile mettere insieme le chiamate e restituire una serie di valori in un determinato ordine:

Vector vec=m_session.evaluate("FirstName := @NameLookup([NoUpdate];\""+ userName + "\"; \"FirstName\"); LastName:= @NameLookup([NoUpdate];\""+ userName + "\"; \"LastName\"); InternetAddress :=@NameLookup([NoUpdate];\""+ userName + "\"; \"InternetAddress\"); FirstName:LastName:InternetAddress");
.

o possibilmente:

String firstName = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"FirstName\")");
String lastName = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"LastName\")");
String internetAddress = m_session.evaluate("@NameLookup([NoUpdate];\""+ userName + "\"; \"InternetAddress\")");
.

e quindi aggiungere quelle tre stringhe in qualsiasi ordine nel tuo vettore.

Un altro approccio è utilizzare la classe DirectoryNavigator.Credo che sia stato disponibile da Notes / Domino 8.5 (forse anche prima di questo).DirectoryNavigator utilizza parte della stessa logica centrale come @NameLookup, quindi dovrebbe funzionare bene.

Ecco alcuni codice di esempio.Non ho testato questo codice esatto, ma l'ho adattato dal codice di produzione che fa una ricerca simile:

    String firstName = null;
    String lastName = null;
    String inetAddress = null;

    Vector<String> lookupItems = new Vector<String>();
    lookupItems.addElement("FirstName");
    lookupItems.addElement("LastName");
    lookupItems.addElement("InternetAddress");

    Vector<String> vName = new Vector<String>();
    vName.addElement(userName);

    Directory dir = session.getDirectory();
    DirectoryNavigator dirNav = dir.lookupNames("($Users)", vName, lookupItems, true);
    if( dirNav != null && dirNav.getCurrentMatches() != 0 ) {

        // Digest the results of the lookup

        Vector<String> value = null;
        value = dirNav.getFirstItemValue();
        firstName = value.elementAt(0);

        value = dirNav.getNextItemValue();
        lastName = value.elementAt(0);

        value = dirNav.getNextItemValue();
        inetAddress = value.elementAt(0);
    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top