package com.appirio.report; import java.io.File; import java.io.IOException; import org.apache.commons.digester.Digester; import org.xml.sax.SAXException; public class XmlLoader { /** * Parse xml proposal data using apache digister library. * @param dataSourceFileName Path to the xml file. * @return Packages object */ public static Packages parseXmlPackages(String dataSourceFileName) throws IOException, SAXException { // initialize digister Digester digester = new Digester(); digester.setValidating(false); // map paths to objects and properties digester.addObjectCreate("QueryResult", Packages.class); digester.addObjectCreate("QueryResult/records", com.appirio.report.FlightLine.class); digester.addBeanPropertySetter("QueryResult/records/Additional_Cost__c", "additionalCost"); digester.addBeanPropertySetter("QueryResult/records/Average_Daily_Spots__c", "averageDailySpots"); digester.addBeanPropertySetter("QueryResult/records/City__c", "city"); digester.addBeanPropertySetter("QueryResult/records/Comments__c", "comments"); digester.addBeanPropertySetter("QueryResult/records/County__c", "county"); digester.addBeanPropertySetter("QueryResult/records/CPP_0d__c", "cPP0d"); digester.addBeanPropertySetter("QueryResult/records/Current_Copy__c", "currentCopy"); digester.addBeanPropertySetter("QueryResult/records/Discount__c", "discount"); digester.addBeanPropertySetter("QueryResult/records/Embellishments__c", "embellishments"); digester.addBeanPropertySetter("QueryResult/records/Face_Direction__c", "faceDirection"); digester.addBeanPropertySetter("QueryResult/records/Facing__c", "facing"); digester.addBeanPropertySetter("QueryResult/records/Id", "id"); digester.addBeanPropertySetter("QueryResult/records/Illumination_yn__c", "illuminationyn"); digester.addBeanPropertySetter("QueryResult/records/Illumination__c", "illumination"); digester.addBeanPropertySetter("QueryResult/records/In_Mkt_Imps__c", "inMktImps"); digester.addBeanPropertySetter("QueryResult/records/In_Mkt_Perc_Comp__c", "inMktPercComp"); digester.addBeanPropertySetter("QueryResult/records/In_Mkt_TRP__c", "inMktTRP"); digester.addBeanPropertySetter("QueryResult/records/Location_Description__c", "locationDescription"); digester.addBeanPropertySetter("QueryResult/records/Location__Latitude__s", "locationLatitudes"); digester.addBeanPropertySetter("QueryResult/records/Location__Longitude__s", "locationLongitudes"); digester.addBeanPropertySetter("QueryResult/records/MapLocation_Number__c", "mapLocationNumber"); digester.addBeanPropertySetter("QueryResult/records/Media_Product__c", "mediaProduct"); digester.addBeanPropertySetter("QueryResult/records/Network_Description__c", "networkDescription"); digester.addBeanPropertySetter("QueryResult/records/Network_Name__c", "networkName"); digester.addBeanPropertySetter("QueryResult/records/Network_Notes__c", "networkNotes"); digester.addBeanPropertySetter("QueryResult/records/Net_Amount_Value__c", "netAmountValue"); digester.addBeanPropertySetter("QueryResult/records/Number_of_Panels__c", "numberofPanels"); digester.addBeanPropertySetter("QueryResult/records/Panel_Id_Label__c", "panelIdLabel"); digester.addBeanPropertySetter("QueryResult/records/PlanTRP__c", "planTRP"); digester.addBeanPropertySetter("QueryResult/records/Plan_Imps_Avg_Frequency__c", "planImpsAvgFrequency"); digester.addBeanPropertySetter("QueryResult/records/Plan_Imps_Reach_Perc__c", "planImpsReachPerc"); digester.addBeanPropertySetter("QueryResult/records/Production__c", "production"); digester.addBeanPropertySetter("QueryResult/records/RecordTypeId", "recordTypeId"); digester.addBeanPropertySetter("QueryResult/records/Ride_Order__c", "rideOrder"); digester.addBeanPropertySetter("QueryResult/records/State__c", "state"); digester.addBeanPropertySetter("QueryResult/records/TAB_Id__c", "tABId"); digester.addBeanPropertySetter("QueryResult/records/Target_In_Market_Imps_000__c", "targetInMarketImps000"); digester.addBeanPropertySetter("QueryResult/records/Target_Total_Imps_000__c", "targetTotalImps000"); digester.addBeanPropertySetter("QueryResult/records/Tax_Amt__c", "taxAmt"); digester.addBeanPropertySetter("QueryResult/records/Timing__c", "timing"); digester.addBeanPropertySetter("QueryResult/records/TotalInMarketCPM_0d__c", "totalInMarketCPM0d"); digester.addBeanPropertySetter("QueryResult/records/Total_Imps__c", "totalImps"); digester.addBeanPropertySetter("QueryResult/records/Total_Price_0d__c", "totalPrice0d"); digester.addBeanPropertySetter("QueryResult/records/Unit_Size__c", "unitSize"); digester.addBeanPropertySetter("QueryResult/records/WeeklyInMarketImps__c", "weeklyInMarketImps"); digester.addBeanPropertySetter("QueryResult/records/WeeklyMarketImps__c", "weeklyMarketImps"); digester.addBeanPropertySetter("QueryResult/records/Weekly_In_Market_Target_Imps_000__c", "weeklyInMarketTargetImps000"); digester.addBeanPropertySetter("QueryResult/records/Weekly_Total_18_Imps_000__c", "weeklyTotal18Imps000"); digester.addBeanPropertySetter("QueryResult/records/Weekly_Total_18_Imps__c", "weeklyTotal18Imps"); digester.addBeanPropertySetter("QueryResult/records/Weekly_Total_Target_Imps_000__c", "weeklyTotalTargetImps000"); digester.addBeanPropertySetter("QueryResult/records/X4_Wk_Avg_Rate_per_Panel__c", "x4WkAvgRateperPanel"); digester.addBeanPropertySetter("QueryResult/records/X4_Wk_Base_Rate__c", "x4WkBaseRate"); digester.addBeanPropertySetter("QueryResult/records/X4_Wk_Floor__c", "x4WkFloor"); digester.addBeanPropertySetter("QueryResult/records/X4_Wk_Proposed_Price__c", "x4WkProposedPrice"); digester.addBeanPropertySetter("QueryResult/records/Zip__c", "zip"); digester.addObjectCreate("QueryResult/records/Child_Flight_Lines__r/records", com.appirio.report.FlightLine.class); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Parent_Flight_Line__c", "parentFlightLine"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/MapLocation_Number__c", "mapLocationNumber"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Location_Description__c", "locationDescription"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Panel_Id_Label__c", "panelIdLabel"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/TAB_Id__c", "tABId"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Face_Direction__c", "faceDirection"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Weekly_Total_18_Imps__c", "weeklyTotal18Imps"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/In_Mkt_Imps__c", "inMktImps"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Total_Imps__c", "totalImps"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/In_Mkt_TRP__c", "inMktTRP"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/PlanTRP__c", "planTRP"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Plan_Imps_Reach_Perc__c", "planImpsReachPerc"); digester.addBeanPropertySetter("QueryResult/records/Child_Flight_Lines__r/records/Plan_Imps_Avg_Frequency__c", "planImpsAvgFrequency"); digester.addObjectCreate("QueryResult/records/Package_Flight__r", com.appirio.report.Flight.class); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Id", "id"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Campaign_End_Date__c", "campaignEndDate"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Campaign_Start_Date__c", "campaignStartDate"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Division__c", "division"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Duration_And_Type__c", "durationAndType"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Flight_Comments__c", "flightComments"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Market_Name__c", "marketName"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Market_Type__c", "marketType"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Media_Category__c", "mediaCategory"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Name", "name"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Comments__c", "packageComments"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Name__c", "packageName"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Type__c", "type"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Target__c", "target"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Target_Population__c", "targetPopulation"); digester.addObjectCreate("QueryResult/records/Package_Flight__r/Package_Market__r", com.appirio.report.Market.class); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Id", "id"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/MarketName__c", "marketName"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Weekly_Total_18_Imps__c", "weeklyTotal18Imps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/In_Mkt_Imps__c", "inMktImps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Target_Total_Imps__c", "targetTotalImps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/In_Mkt_TRP__c", "inMktTRP"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Plan_TRP__c", "planTRP"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Total_Price__c", "totalPrice"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/CPM__c", "cPM"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/CPP__c", "cPP"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Reach__c", "reach"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Frequency__c", "freq"); digester.addObjectCreate("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r", com.appirio.report.Package.class); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Id", "id"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Package_Name__c", "packageName"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Weekly_Total_18_Imps__c", "weeklyTotal18Imps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/In_Mkt_Imps__c", "inMktImps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Target_Total_Imps__c", "targetTotalImps"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/In_Mkt_TRP__c", "inMktTRP"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Plan_TRP__c", "planTRP"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/Total_Price__c", "totalPrice"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/CPM__c", "cPM"); digester.addBeanPropertySetter("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r/CPP__c", "cPP"); digester.addSetNext("QueryResult/records", "processFlightLine"); digester.addSetNext("QueryResult/records/Child_Flight_Lines__r/records", "addChildFlightLine"); digester.addSetNext("QueryResult/records/Package_Flight__r", "setFlight"); digester.addSetNext("QueryResult/records/Package_Flight__r/Package_Market__r", "setMarket"); digester.addSetNext("QueryResult/records/Package_Flight__r/Package_Market__r/Package__r", "setPackage"); // parse File inputFile = new File(dataSourceFileName); Packages packages = (Packages) digester.parse(inputFile); return packages; } /** * Parse xml map panel order preferences. * @param dataSourceFileName Path to the xml file. * @return MapPanelOrderPreferences object. * @throws IOException * @throws SAXException */ public static MapPanelOrderPreferences parseXmlMapPanelOrderPreferences(String dataSourceFileName) throws IOException, SAXException { // initialize digister Digester digester = new Digester(); digester.setValidating(false); // map paths to objects and properties digester.addObjectCreate("QueryResult", MapPanelOrderPreferences.class); digester.addObjectCreate("QueryResult/records", MapPanelOrderPreference.class); digester.addBeanPropertySetter("QueryResult/records/Sort_Sequence__c", "sortSequence"); digester.addBeanPropertySetter("QueryResult/records/Flight__c", "flight"); digester.addBeanPropertySetter("QueryResult/records/Panel__c", "panel"); digester.addSetNext("QueryResult/records", "addMapPanelOrderPreference"); // parse File inputFile = new File(dataSourceFileName); MapPanelOrderPreferences mapPanelOrderPreferences = (MapPanelOrderPreferences) digester.parse(inputFile); return mapPanelOrderPreferences; } }