Skip to content

Commit c6838e1

Browse files
authored
Merge pull request #49 from folio-org/MODEUSCNT-13
MODEUSCNT-13
2 parents 595062b + 4f900a2 commit c6838e1

File tree

3 files changed

+62
-5
lines changed

3 files changed

+62
-5
lines changed

mod-erm-usage-counter50/src/main/java/org/olf/erm/usage/counter50/csv/mapper/MapperFactory.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.olf.erm.usage.counter50.csv.mapper;
22

3+
import java.io.BufferedReader;
34
import java.io.IOException;
5+
import java.io.StringReader;
46
import org.olf.erm.usage.counter50.csv.mapper.csv2report.CsvToReportMapper;
57
import org.olf.erm.usage.counter50.csv.mapper.csv2report.DRCsvToReport;
68
import org.olf.erm.usage.counter50.csv.mapper.csv2report.IRCsvToReport;
@@ -61,18 +63,24 @@ public static ReportToCsvMapper createReportToCsvMapper(Object report) throws Ma
6163

6264
public static CsvToReportMapper createCsvToReportMapper(String csvReport) throws MapperException {
6365
try {
64-
if (csvReport.startsWith("Report_Name,Title Master Report")) {
66+
BufferedReader br = new BufferedReader(new StringReader(csvReport));
67+
String firstLine = br.readLine();
68+
if (firstLine == null) {
69+
throw new MapperException("Cant read first line.");
70+
}
71+
72+
if (firstLine.contains("Title Master Report")) {
6573
return new TRCsvToReport(csvReport);
66-
} else if (csvReport.startsWith("Report_Name,Item Master Report")) {
74+
} else if (firstLine.contains("Item Master Report")) {
6775
return new IRCsvToReport(csvReport);
68-
} else if (csvReport.startsWith("Report_Name,Platform Master Report")) {
76+
} else if (firstLine.contains("Platform Master Report")) {
6977
return new PRCsvToReport(csvReport);
70-
} else if (csvReport.startsWith("Report_Name,Database Master Report")) {
78+
} else if (firstLine.contains("Database Master Report")) {
7179
return new DRCsvToReport(csvReport);
7280
} else {
7381
throw new MapperException("Cannot create CsvToReportMapper. Report has unknown name.");
7482
}
75-
} catch (IOException | MapperException e) {
83+
} catch (IOException e) {
7684
throw new MapperException("Cannot create CsvToReportMapper. " + e.getCause());
7785
}
7886
}

mod-erm-usage-counter50/src/test/java/org/olf/erm/usage/counter50/csv/mapper/MapperTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.olf.erm.usage.counter50.csv.mapper;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
45

56
import com.google.common.io.Resources;
67
import java.io.IOException;
@@ -20,6 +21,7 @@
2021
import org.olf.erm.usage.counter50.Counter5Utils;
2122
import org.olf.erm.usage.counter50.Counter5Utils.Counter5UtilsException;
2223
import org.olf.erm.usage.counter50.csv.mapper.csv2report.CsvToReportMapper;
24+
import org.olf.erm.usage.counter50.csv.mapper.csv2report.TRCsvToReport;
2325

2426
@RunWith(Enclosed.class)
2527
public class MapperTest {
@@ -111,4 +113,34 @@ private void assertThatMetricTypesAreEqual(String expectedLine, List<String> act
111113
}
112114
}
113115
}
116+
117+
public static class MapperFactoryTest {
118+
119+
@Test
120+
public void testCsvWithQuotes() throws IOException, MapperException {
121+
String inputStr =
122+
Resources.toString(
123+
Resources.getResource("reports/TR_withquotes.csv"), StandardCharsets.UTF_8);
124+
CsvToReportMapper result = MapperFactory.createCsvToReportMapper(inputStr);
125+
assertThat(result).isInstanceOf(TRCsvToReport.class);
126+
}
127+
128+
@Test
129+
public void testCsvWithNoContent() {
130+
String inputStr = "";
131+
assertThatThrownBy(() -> MapperFactory.createCsvToReportMapper(inputStr))
132+
.isInstanceOf(MapperException.class)
133+
.hasMessageContaining("Cant read first line");
134+
}
135+
136+
@Test
137+
public void testCsvWithUnknownReport() throws IOException {
138+
String inputStr =
139+
Resources.toString(
140+
Resources.getResource("reports/TRB1_merged.csv"), StandardCharsets.UTF_8);
141+
assertThatThrownBy(() -> MapperFactory.createCsvToReportMapper(inputStr))
142+
.isInstanceOf(MapperException.class)
143+
.hasMessageContaining("unknown name");
144+
}
145+
}
114146
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"Report_Name","Title Master Report"
2+
"Report_ID","TR"
3+
"Release","5"
4+
"Institution_Name","Library"
5+
"Institution_ID","Proprietary=SPIE:id"
6+
"Metric_Types",""
7+
"Report_Filters",""
8+
"Report_Attributes",""
9+
"Exceptions",""
10+
"Reporting_Period","Begin_Date=2020-01-01; End_Date=2020-12-31"
11+
"Created","2021-06-24T07:54:40Z"
12+
"Created_By","Scholarly iQ for SPIE"
13+
14+
"Title","Publisher","Publisher_ID","Platform","DOI","Proprietary_ID","ISBN","Print_ISSN","Online_ISSN","URI","Data_Type","Section_Type","YOP","Access_Type","Access_Method","Metric_Type","Reporting_Period_Total","Jan-2020","Feb-2020","Mar-2020","Apr-2020","May-2020","Jun-2020","Jul-2020","Aug-2020","Sep-2020","Oct-2020","Nov-2020","Dec-2020"
15+
"3D Printing of Optics","SPIE","SPIE:84645379-E915-E911-8138-005056BE4D05","SPIE","10.1117/3.2324763","SPIE:SL39","978-1-5106-1998-2","","","","","","","","","Total_Item_Investigations","9","5","0","4","0","0","0","0","0","0","0","0","0"
16+
"3D Printing of Optics","SPIE","SPIE:84645379-E915-E911-8138-005056BE4D05","SPIE","10.1117/3.2324763","SPIE:SL39","978-1-5106-1998-2","","","","","","","","","Total_Item_Requests","3","2","0","1","0","0","0","0","0","0","0","0","0"
17+
"3D Printing of Optics","SPIE","SPIE:84645379-E915-E911-8138-005056BE4D05","SPIE","10.1117/3.2324763","SPIE:SL39","978-1-5106-1998-2","","","","","","","","","Unique_Item_Investigations","5","2","0","3","0","0","0","0","0","0","0","0","0"

0 commit comments

Comments
 (0)