© 1999-2003, Flemming Koch Jensen
Alle rettigheder forbeholdt
Visitor Pattern

Vejledning løsninger
Opgaver

 

 

1 [Forudsætning: Kræver kendskab til klassen java.io.File, interfacet java.io.FileFilter og har løst opgave 4 i kapitlet Filer]

I denne opgave skal vi arbejde videre med FileVisitor-eksemplet fra kapitlet om Visitor Pattern.

Først skal vi supplere FileVisitor-interfacet med en metode:
void setFilter( FileFilter )
Alle klasser, der implementerer FileVisitor forpligter sig ikke alene til at lave denne metode, men også til at anvende et sådant FileFilter i forbindelse med de File's den besøger. Hvis en File's navn ikke accepteres af det anførte filter, skal filen ignoreres. Hvis der ikke er anført noget filter, skal alle File'r accepteres.
Foretag de fornødne ændringer i FileVisitor og ListVisitor - så de er i overensstemmelse med ovenstående. Anvend instanser af klassen StringFileFilter (Fra opgave 4 i kapitlet "Filer") til test.
Efter dette, vil vi nu udvide vores samling af FileVisitor's med følgende:
DirCountFileVisitor

Denne FileVisitor beregner antallet af directories den besøger.

Lav en get-metode så man kan hente resultatet.

TotalSizeFileVisitor

Denne FileVisitor beregner den samlede størrelse af de filer den besøger.

Lav en get-metode så man efterfølgende kan hente resultatet.

ReplaceCharFileVisitor

Denne FileVisitor ændrer alle filer og directories navne som den besøger, ved at den erstatter alle forekomster af et bestemt tegn med et andet.

Lav en konstruktor tager de to tegn som parameter (Lad default være at underscore '_' erstattes med mellemrum ' ').

Lad i testøjemed process-metoden udskrive navnene på de filer og directories den reelt ændrer på (navnene før og efter).

Vær forsigtig med at teste den sidste af de tre visitors, da den potentielt set kan "smadre" hele din harddisk. Test den derfor altid på et directory lavet til formålet; hvor du placerer filer og directories der gerne må få ødelagt deres navne.