public static void replicateFiles(String dataNodeName){
		
		System.out.println("This Data node is dead  " + dataNodeName);
		System.out.println("Starting the replication process.");
		
		// Retrieve the InpurFileInfo that is related to the Dead Data Node
		List<InputFileInfo> infoList = needValidations(dataNodeName);
		
		
		// Going through the info list to identify the files needed to be replicated 
		for(InputFileInfo info : infoList){
			System.out.println("Info   " +info.getFileName());
			for(String file : info.filesFromDeadDataNode(dataNodeName)){
				System.out.println("This is the missing file  " + file);
				String dataNode = info.fileExistInDataNode(file);
				System.out.println("This is where the existing file is. " + dataNode);
				Boolean found = Boolean.FALSE;
				
				Integer counter = 0;
				while(!found){
					
					// This will get the next data node in rotation.
					// By doing so we could replicate the file in different location
					Entry<String, DataNode> entry = getNextDataNodeEntry();
					
					if(!(entry==null)){
						try {
							// We will look into the data node and check whether 
							// the existing file exist in the data node
							// If the file does not exist in the data Node
							// Add that file in.
							if(!entry.getValue().isExist(file)){
								
								found = Boolean.TRUE;
								
								// Got the dataNode from an existing Node 
								DataNode node = list_dataNode.get(dataNode);
								
	//							Debug
	//							System.out.println("I am about to retrieve   " + file);
	//							System.out.println("from    " + dataNode);
	//							for(String fileaaa : node.getFileList()){
	//								System.out.println("-------"+fileaaa);
	//							}
								
								// Getting the data from the dataNode
								String data = node.retrieve(file);
								
								// Get the new Node and submit the file
								DataNode newNode = entry.getValue();
								newNode.submit(file, data);
								
								// update the info with the new file.
								info.addFileParitionInfo(entry.getKey(), file);
							} else {
								// This is a limitation of the replication retry process.
								// If the counter is over the size of the dataNode
								// There is no need for replication. All files exist in the filesystem.
								counter++;
								if(counter >  list_dataNode.size()){
									found = Boolean.TRUE;
								}
							}
						} catch (RemoteException e) {
							System.out.println("Error while asking the remote object");
						}
					}
				}
			}
			
			info.validateFiles();
		}
		
		System.out.println("Replication process has completed.");
		
		
	}