cug
Class CugApp

java.lang.Object
  |
  +--cug.CugApp

public class CugApp
extends java.lang.Object

centrale matching engine


Field Summary
(package private) static Category cat
           
(package private) static boolean connectByUserID
          als sleutel niet gevonden wordt, ga dan uit van person.userid of doe dit niet
(package private)  java.util.Map groepContainerM
          koppeling van groepnamen naar containernamen; (voorts groep-map)
(package private)  NDSMap ndsCreate
          create lijst; niet bestaande nds-user met persoon bekend
(package private)  NDSMap ndsDelete
          delete lijst; nds-user met persoon onbekend
private  NDSMap ndsExisting
          ndsUsers + ndsUpdate
(package private)  NDSMap ndsMap
          alle bestaande nds-users in de containers voor deze ptree initieel: alle bekende nds-users; (voorts nds-map)
private  NDSMap ndsPTree
          ndsUsers + ndsUpdate + ndsCreate
(package private)  NDSMap ndsUpdate
          update lijst; nds-user met persoon bekend van de nds-user klopt of het nummer niet of de context; in dit laatste geval wordt de status op UNKNOWN gezet users afkomstig uit 'update' zijn al geupdate in het geheugen, maw stemmen niet 1 op 1 overeen met de gegevens in de nds
(package private)  NDSMap ndsUsers
          reguliere gebruikers; nds-user met persoon bekend
(package private)  PTree ptree
          ptree bevat alle bekende personen in een ptree-structuur
(package private) static boolean strictLookALikes
          beschouw alleen lookalikes in dezelfde container als geldig
(package private) static boolean updateLookALikes
          controleer of er delete-users zijn die lijken op create-users en hevel deze over naar update of doe dit niet
 
Constructor Summary
(package private) CugApp()
           
  CugApp(PTree pt)
           
 
Method Summary
protected  void collectDeleteUsers()
          zoek delete-users (waar geen persoon aan is verbonden) in de in init gestelde ndsmap
protected  void collectDeleteUsers(java.util.Map groepM, boolean deep)
          zoek delete-users in de containers die voorkomen in param groepm
protected  void collectDeleteUsers(NDSMap nm)
          zoek users waar geen persoon bij is gevonden (wordt na constructie aangeroepen in init() na connectPTreeToNDS()) zorg er voor dat alleen users met een key in delete terecht komen doe evt (boolean CugApp.updateLookALikes) een vergelijking met create en hevel lookalikes over naar update; de groep ndsupdate met status 'disabled': bestaande ndsusers die niet rechtstreeks aan een persoon gekoppeld kunnen worden; stel dat ze gewijzigd worden zoals hier voorgesteld, dan worden ze gekoppeld aan de persoon met personid; je geeft de dn ahw aan de persoon
protected  void connectPersonToExistingUser(Person p, NDSUser u, java.lang.String cx)
          koppel person aan nds-user en voeg toe aan de lijst van reguliere users; controleer of person-id overeenkomt met user-key en of param cx overeenkomt met context van user als dit niet het geval is, koppel de persoon aan de user, maar voeg toe aan de lijst van update users
protected  void connectPTreeToNDS(PTree pt, NDSMap nm, java.util.Map groepM)
          doorloop PTree neem groepNaam als groepNaam sleutel is in groupContainerMap neem personen onder de PTree 'groepNaam' is er een nds-user met hetzelfde nummer ?
protected  void connectPTreeToNDS(PTree pt, NDSMap nm, java.lang.String cx)
          verbindt een persoon met een nds-user; splitst op volgens cugapp: regulier, update of create
protected  NDSMap connectUserToPerson(NDSMap nm, PTree pt)
          zoek juiste personen bij users in een nds-map; retourneer een NDSMap met de nds-users die te koppelen zijn aan PTree wordt gebruikt als de nds-users in de n-tabellen als uitgangspunt dienen
protected  void createUserForPerson(Person p, java.lang.String cx)
          maak een nieuwe user in context aan voor person en voeg die toe aan de create-lijst verplaats de gebruiker naar cx als de gebruiker al in de create-lijst voorkomt, doe dit echter alleen als de param cx langer is dan de cx die de gebruiker al heeft; 'langer' wordt hier dus geinterpreteerd als 'preciezer'; bv 'BE.EDU.HSBOS' is preciezer dan 'EDU.HSBOS' doet niets als cx ongeldig is (wordt getest via container-factory)
 NDSMap getNdsCreate()
           
 NDSMap getNdsDelete()
           
 NDSMap getNdsExisting()
          alle users in 'regulier' en 'update'; alle bestaande users met person bekend
 NDSMap getNDSMap()
           
 NDSMap getNdsMove()
          nds-move is { ndsupdate | status user == NDSUser.UNKNOWN }
 NDSMap getNdsPTree()
          alle users in 'regulier, 'update' en 'create'; alle users met person bekend; bestaande en niet-bestaande alle person hebben hier dus een user; gebruik deze als je een ptree wilt doorlopen.
 NDSMap getNdsUpdate()
           
 NDSMap getNdsUsers()
           
 PTree getPTree()
           
static NDSMap getUsersInPTree(NDSMap nm, PTree pt)
          selecteer die gebruikers in een zekere nds-map, die behoren tot een zekere ptree gaat met een iterator over nds-map; gebruik als nds-map kleiner is dan ptree
static NDSMap getUsersInPTree(PTree pt, NDSMap nm)
          selecteer die gebruikers in een zekere nds-map, die behoren tot een zekere ptree gaat met een iterator over ptree; gebruik als ptree kleiner is dan nds-map (zelden)
(package private)  void init()
          koppelt gebruikers aan personen en zoekt daarna delete gebruikers (niet gekoppeld aan persoon)
 void initFromTables()
          lees de ndsCreate en ndsUpdate in vanaf de n-tabellen, gebruik alleen die gebruikers die bij deze ptree horen; ndsUsers en ndsDelete wordt gevuld in setPTree(); ndsCreate en ndsUpdate vanaf de de resp. tabellen; users die ook in update voorkomen worden verwijderd uit delete de n-tabellen kunnen nabewerkt zijn, waardoor de relatie met ndsUsers onnauwkeurig kan worden ??
(package private)  void reset()
          users, create, delete en update worden leeggemaakt; nds-map verwijst naar de volledige nds-map uit CugResources; groep-map idem m.m.
 void setPTree(PTree pt)
          geef een waarde voor de hoofd ptree van deze app; zoek juiste waarden bij groep-map en nds-map
 void setPTree(java.lang.String ptc)
          verander van ptree via ptree-code
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cat

static Category cat

ndsUsers

NDSMap ndsUsers
reguliere gebruikers; nds-user met persoon bekend


ndsCreate

NDSMap ndsCreate
create lijst; niet bestaande nds-user met persoon bekend


ndsUpdate

NDSMap ndsUpdate
update lijst; nds-user met persoon bekend van de nds-user klopt of het nummer niet of de context; in dit laatste geval wordt de status op UNKNOWN gezet

users afkomstig uit 'update' zijn al geupdate in het geheugen, maw stemmen niet 1 op 1 overeen met de gegevens in de nds


ndsDelete

NDSMap ndsDelete
delete lijst; nds-user met persoon onbekend


ndsMap

NDSMap ndsMap
alle bestaande nds-users in de containers voor deze ptree initieel: alle bekende nds-users; (voorts nds-map)

See Also:
CugResources.ndsMap, CugResources.groepContainerM, setPTree(cug.ptree.PTree)

groepContainerM

java.util.Map groepContainerM
koppeling van groepnamen naar containernamen; (voorts groep-map)

See Also:
CugResources.groepContainerM

ndsExisting

private NDSMap ndsExisting
ndsUsers + ndsUpdate


ndsPTree

private NDSMap ndsPTree
ndsUsers + ndsUpdate + ndsCreate


ptree

PTree ptree
ptree bevat alle bekende personen in een ptree-structuur

See Also:
ptree.PTree

connectByUserID

static boolean connectByUserID
als sleutel niet gevonden wordt, ga dan uit van person.userid of doe dit niet


updateLookALikes

static boolean updateLookALikes
controleer of er delete-users zijn die lijken op create-users en hevel deze over naar update of doe dit niet

See Also:
cug.NDSMap#getLookAlikes

strictLookALikes

static boolean strictLookALikes
beschouw alleen lookalikes in dezelfde container als geldig

See Also:
cug.NDSMap#getLookAlikes
Constructor Detail

CugApp

CugApp()

CugApp

public CugApp(PTree pt)
Method Detail

reset

void reset()
users, create, delete en update worden leeggemaakt; nds-map verwijst naar de volledige nds-map uit CugResources; groep-map idem m.m.


setPTree

public void setPTree(PTree pt)
geef een waarde voor de hoofd ptree van deze app; zoek juiste waarden bij groep-map en nds-map


getNDSMap

public NDSMap getNDSMap()

setPTree

public void setPTree(java.lang.String ptc)
verander van ptree via ptree-code

See Also:
CugResources.getPTree()

getPTree

public PTree getPTree()

init

void init()
koppelt gebruikers aan personen en zoekt daarna delete gebruikers (niet gekoppeld aan persoon)

See Also:
connectPTreeToNDS(cug.ptree.PTree, cug.novell.NDSMap, java.lang.String), collectDeleteUsers()

initFromTables

public void initFromTables()
                    throws java.lang.Exception
lees de ndsCreate en ndsUpdate in vanaf de n-tabellen, gebruik alleen die gebruikers die bij deze ptree horen;

ndsUsers en ndsDelete wordt gevuld in setPTree(); ndsCreate en ndsUpdate vanaf de de resp. tabellen; users die ook in update voorkomen worden verwijderd uit delete

de n-tabellen kunnen nabewerkt zijn, waardoor de relatie met ndsUsers onnauwkeurig kan worden ?? evt ndsUsers.subtract( ndsupdate ) oid?

java.lang.Exception

getNdsUsers

public NDSMap getNdsUsers()

getNdsCreate

public NDSMap getNdsCreate()

getNdsUpdate

public NDSMap getNdsUpdate()

getNdsDelete

public NDSMap getNdsDelete()

getNdsMove

public NDSMap getNdsMove()
nds-move is { ndsupdate | status user == NDSUser.UNKNOWN }


getNdsPTree

public NDSMap getNdsPTree()
alle users in 'regulier, 'update' en 'create'; alle users met person bekend; bestaande en niet-bestaande alle person hebben hier dus een user; gebruik deze als je een ptree wilt doorlopen.

See Also:
om hier weer ptree-selecties uit te halen

getNdsExisting

public NDSMap getNdsExisting()
alle users in 'regulier' en 'update'; alle bestaande users met person bekend


connectPersonToExistingUser

protected void connectPersonToExistingUser(Person p,
                                           NDSUser u,
                                           java.lang.String cx)
koppel person aan nds-user en voeg toe aan de lijst van reguliere users; controleer of person-id overeenkomt met user-key en of param cx overeenkomt met context van user als dit niet het geval is, koppel de persoon aan de user, maar voeg toe aan de lijst van update users

See Also:
NUpdateTable.insertRec(java.sql.PreparedStatement, java.lang.Object)

createUserForPerson

protected void createUserForPerson(Person p,
                                   java.lang.String cx)
maak een nieuwe user in context aan voor person en voeg die toe aan de create-lijst verplaats de gebruiker naar cx als de gebruiker al in de create-lijst voorkomt, doe dit echter alleen als de param cx langer is dan de cx die de gebruiker al heeft; 'langer' wordt hier dus geinterpreteerd als 'preciezer'; bv 'BE.EDU.HSBOS' is preciezer dan 'EDU.HSBOS'

doet niets als cx ongeldig is (wordt getest via container-factory)

See Also:
cug.novell.NDSContainerFactory#getContainerByName

connectPTreeToNDS

protected void connectPTreeToNDS(PTree pt,
                                 NDSMap nm,
                                 java.lang.String cx)
verbindt een persoon met een nds-user; splitst op volgens cugapp: regulier, update of create

See Also:
connectPersonToExistingUser(util.Person, cug.novell.NDSUser, java.lang.String), createUserForPerson(util.Person, java.lang.String)

connectPTreeToNDS

protected void connectPTreeToNDS(PTree pt,
                                 NDSMap nm,
                                 java.util.Map groepM)
doorloop PTree
neem groepNaam
als groepNaam sleutel is in groupContainerMap
neem personen onder de PTree 'groepNaam'
is er een nds-user met hetzelfde nummer ? :
(* is er een nds-user met dezelfde userid)
koppel de persoon aan deze user
kopieer de user naar 'users'
( vergelijk nds-user met persoon en kopieer evt naar 'update' )
* zo niet :
maak een nieuwe user op basis van deze persoon
kopieer deze naar 'create'


collectDeleteUsers

protected void collectDeleteUsers()
zoek delete-users (waar geen persoon aan is verbonden) in de in init gestelde ndsmap


collectDeleteUsers

protected void collectDeleteUsers(java.util.Map groepM,
                                  boolean deep)
zoek delete-users in de containers die voorkomen in param groepm


collectDeleteUsers

protected void collectDeleteUsers(NDSMap nm)
zoek users waar geen persoon bij is gevonden (wordt na constructie aangeroepen in init() na connectPTreeToNDS())

zorg er voor dat alleen users met een key in delete terecht komen

doe evt (boolean CugApp.updateLookALikes) een vergelijking met create en hevel lookalikes over naar update; de groep ndsupdate met status 'disabled': bestaande ndsusers die niet rechtstreeks aan een persoon gekoppeld kunnen worden; stel dat ze gewijzigd worden zoals hier voorgesteld, dan worden ze gekoppeld aan de persoon met personid; je geeft de dn ahw aan de persoon

See Also:
#udateLookALikes, NDSMap.getLookALikes(cug.novell.NDSUser), NDSMap.getUsersInContext(java.util.Collection)

connectUserToPerson

protected NDSMap connectUserToPerson(NDSMap nm,
                                     PTree pt)
zoek juiste personen bij users in een nds-map; retourneer een NDSMap met de nds-users die te koppelen zijn aan PTree wordt gebruikt als de nds-users in de n-tabellen als uitgangspunt dienen

Returns:
NDSMap nm; met nds-users die te koppelen zijn aan een persoon in PTree

getUsersInPTree

public static NDSMap getUsersInPTree(NDSMap nm,
                                     PTree pt)
selecteer die gebruikers in een zekere nds-map, die behoren tot een zekere ptree

gaat met een iterator over nds-map; gebruik als nds-map kleiner is dan ptree

Returns:
NDSMap nm; deelverzameling van param nm;

getUsersInPTree

public static NDSMap getUsersInPTree(PTree pt,
                                     NDSMap nm)
selecteer die gebruikers in een zekere nds-map, die behoren tot een zekere ptree

gaat met een iterator over ptree; gebruik als ptree kleiner is dan nds-map (zelden)

Returns:
NDSMap nm; deelverzameling van param nm;