private Map<File, File[]> getDataMap_1_1(String[] dataDirs) {
		Map<File, File[]> map = new HashMap<File, File[]>();

		boolean doLog = false;
		if(!lockedMessages.contains("getDataMap")) {
			lockedMessages.add("getDataMap");
			doLog = true;
		}

		for (int i = 0; i < dataDirs.length; i++) {
			File dir = new File(dataDirs[i]);
			if (!dir.canRead()) {
				if(doLog) {
					logger.warn("Can't read: " + dir);
				}
				continue;
			}
			
			File[] ksList = dir.listFiles();
			for (int j = 0; j < ksList.length; j++) {

				if (ksList[j].isDirectory()) {
					File[] familyList = ksList[j].listFiles();
					
					for(int n = 0; n < familyList.length; n++) {
						if(familyList[n].isDirectory()) {
							ArrayList<File> snapshots = new ArrayList<File>();

							File snDir = new File(familyList[n], SNAPSHOTS_DIR_NAME);
							if (snDir.isDirectory()) {

								File[] snList = snDir.listFiles();

								for (int k = 0; k < snList.length; k++) {
									if (snList[k].isDirectory()) {
										snapshots.add(snList[k]);
									}
								}
							}

							map.put(familyList[n],
									snapshots.toArray(new File[snapshots.size()]));
							
						}						
					}					
				}
			}
		}
		
//		if(doLog) {
//			logger.debug("familiesCount=" + map.size());
//			
//			for(File f : map.keySet()) {
//				File[] snaps = map.get(f);
//				logger.debug("family: " + f.getAbsolutePath() + ",  snapshotsCount=" + snaps.length);
//	
//				for(int i = 0; i < snaps.length; i++) {
//					logger.debug("snaps[" + i + "]: " + snaps[i]);
//				}
//			}
//		}
		
		return map;
	}
private Map < File , File [ ] > getDataMap_1_1 ( String [ ] dataDirs ) { Map < File , File [ ] > map = new HashMap < File , File [ ] > ( ) ; boolean doLog = false ; if ( ! lockedMessages . contains ( "getDataMap" ) ) { lockedMessages . add ( "getDataMap" ) ; doLog = true ; } for ( int i = 0 ; i < dataDirs . length ; i ++ ) { File dir = new File ( dataDirs [ i ] ) ; if ( ! dir . canRead ( ) ) { if ( doLog ) { logger . warn ( "Can't read: " + dir ) ; } continue ; } File [ ] ksList = dir . listFiles ( ) ; for ( int j = 0 ; j < ksList . length ; j ++ ) { if ( ksList [ j ] . isDirectory ( ) ) { File [ ] familyList = ksList [ j ] . listFiles ( ) ; for ( int n = 0 ; n < familyList . length ; n ++ ) { if ( familyList [ n ] . isDirectory ( ) ) { ArrayList < File > snapshots = new ArrayList < File > ( ) ; File snDir = new File ( familyList [ n ] , SNAPSHOTS_DIR_NAME ) ; if ( snDir . isDirectory ( ) ) { File [ ] snList = snDir . listFiles ( ) ; for ( int k = 0 ; k < snList . length ; k ++ ) { if ( snList [ k ] . isDirectory ( ) ) { snapshots . add ( snList [ k ] ) ; } } } map . put ( familyList [ n ] , snapshots . toArray ( new File [ snapshots . size ( ) ] ) ) ; } } } } } return map ; }
family-dir -> snapshot-dir-list