On Mon, Sep 22, 2008 at 02:38:51PM +0200, Stöhr Miroslav RNDr. Ph.D. wrote: > Zdravím kolegy, > > mám následující otázku: V poměrně rozsáhlém projektu se nám vyskytl problém v > tom, že v jednom modulu dochází k následující konstrukci > > myObject.setDateAttribute(originalObject.getTimestampAttribute); //*1 > > tj. dochází k tomu, že do atributu typu java.util.Date je vložen atribut > java.sql.Timestamp (potomek java.util.Date, takže je vše OK). > > Problém je v tom, že v jiném modulu, kam se dostane myObjekt, začne vadit, že > > java.util.Date myObject.getDateAttribute(); > > vrátí java.sql.Timestamp (díky používání jedné interní knihovny, kterou > bohužel nemohu jednoduše změnit). > > Oprava je jednoduchá -- do místa //*1 vložím jednoduchou konverzi z Timestamp > do Date (kupř. new Date(timestamp.getTime()), nebo tak něco podobného). > > No a teď můj dotaz: Jak co nejrychleji vyhledat v kódu všechna místa typu > //*1 ? Mohou to být v principu jednotky výskytů mezi řádově tisícovkami > podobných volání v mnoha stovkách tříd. > > Díky za každý nápad (kromě ručního procházení :-))
TMTOWDI Hodne zalezi na tom, co vlastne hledate. Rekl bych, ze nalezeni vsech mist, kde je jako parametr pouzit java.sql.Timestamp a ocekava se java.util.Date, bude asi hodne komplikovane. Zkusil bych nasledujici: a) omezit se na vyskyt vsech pouziti setteru, nechat si je vyhledat a vysledek grepnout na getTimeStampAttribute b) opacny postup - pouziti getteru a grep na setter c) pouzit klasicky grep na ony dva retezce na radku Ja osobne bych volil verzi a) s nasledujicim postupem 1) otevrit IntelliJ ;-) 2) jit na radek //*1 3) na setter metode dat Alt-F7 (Find Usages) 4a) pokud je malo vysledku, projdu rucne 4b) v okne vysledku dat expand all -> export to text-> save 5) otevrit textak ve VIM a /getTimeStampAttribute Oto 'tapik' Buchta
