Last active
January 23, 2018 18:06
-
-
Save sfdcale/d4be25da88b6e3c52045cf6a9e99f1e1 to your computer and use it in GitHub Desktop.
Find Salesforce Reports using specific fields
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.MyProject; | |
import java.util.ArrayList; | |
import java.util.HashMap; | |
import java.util.HashSet; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Set; | |
import java.io.BufferedReader; | |
import java.io.File; | |
import java.io.FileNotFoundException; | |
import java.io.FileReader; | |
import java.io.IOException; | |
//This class looks into the reports folder and finds reports using the specific fields that we are interested in. | |
public class ReportsFinder { | |
//This variable holds report name as key and API field names(we are interested) in as values. | |
static Map<String, Set<String>> reportFieldSet = new HashMap<>(); | |
//This variable contains the API field names that we are looking for in Reports. | |
static List<String> fieldNames = new ArrayList<String>(); | |
public static void main(String[] args){ | |
// Base reports folder. | |
File folder = new File("/home/ram/deter/My_SFDC_Project/src/reports"); | |
//Add field names to the list | |
fieldNames.add("FieldOne__c"); | |
fieldNames.add("FieldTwo__c"); | |
try{ | |
searchReports(folder); | |
}catch(Exception e){ | |
System.out.println(e.getMessage()); | |
} | |
for(String reportName: reportFieldSet.keySet()){ | |
if(reportFieldSet.get(reportName).size() > 0){ | |
System.out.println(reportName + " uses the below fields: "); | |
} | |
for(String fieldName: reportFieldSet.get(reportName)){ | |
System.out.println(" " + fieldName); | |
} | |
} | |
} | |
public static void searchReports(File folderName) throws FileNotFoundException,IOException{ | |
for (File fileEntry : folderName.listFiles()) { | |
if(fileEntry.isDirectory()){ | |
searchReports(fileEntry); | |
}else{ | |
reportFieldSet.put(folderName.getName() + "/" + fileEntry.getName(), new HashSet<>()); | |
FileReader fileReader = new FileReader(fileEntry); | |
BufferedReader bufferedReader = new BufferedReader(fileReader); | |
String line; | |
while ((line = bufferedReader.readLine()) != null) { | |
for(String fieldName : fieldNames){ | |
if(line.contains(fieldName)){ | |
reportFieldSet.get(folderName.getName() + "/" + fileEntry.getName()).add(fieldName); | |
} | |
} | |
} | |
fileReader.close(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment