public static Map<String,String> getDataGroupSubjectMap(String url,String minDateStr,String maxDateStr) throws ParseException{
		Map<String,String> map = new IdentityHashMap<String,String>();
		List<String> DataGroupList = new ArrayList<String>();
		List<String> SubjectList = new ArrayList<String>();
		List<String> removeList = new ArrayList<String>();
		
		try {
			System.out.println("[INFO]Calling URL ["+url+"] to build up the 'DataGroup'<=>'Subject' map");
			BaseReader reader = ReaderFactory.create(SourceSwitcher.NotificationSystem);
			Document docObj = reader.getXMLDocument(url);
			DataGroupList = ReaderFactory.responseHandle(docObj,"DataGroup");
			SubjectList = ReaderFactory.responseHandle(docObj, "Subject");
			
			for(String subjectStr:SubjectList){
				Date minDate = dateFormatter1.parse(minDateStr);
				Date maxDate = dateFormatter1.parse(maxDateStr);
				String[] ele = subjectStr.split("=");
				Date actrualDate = dateFormatter2.parse(ele[1]);
				if(actrualDate.before(minDate) || actrualDate.after(maxDate)){
					removeList.add(subjectStr);
				}							
			}
//Remove all datas which beyond of date range
			if(!removeList.isEmpty()){
				SubjectList.removeAll(removeList);
			}
						
			if(!SubjectList.isEmpty() && !DataGroupList.isEmpty()){
				int count=0;
				for(String refferenceIdDateStr:SubjectList){
					map.put(DataGroupList.get(count), refferenceIdDateStr);
					count++;
				}
			}
		} catch (ReaderConfigException | LoginException | XMLReadException e) {
			e.printStackTrace();
		}
		return map;
	}