You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2020/11/07 12:37:51 UTC
[incubator-hop] branch master updated: SonarQube issues fix (#362)
This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git
The following commit(s) were added to refs/heads/master by this push:
new d34fc38 SonarQube issues fix (#362)
d34fc38 is described below
commit d34fc380983840eff68b514784d6e47af7b426eb
Author: Mahendran Mookkiah <ma...@gmail.com>
AuthorDate: Sat Nov 7 07:37:45 2020 -0500
SonarQube issues fix (#362)
Sonar issues in excelinput, replacestring, sort transformation fixed.
---
.../transforms/excelinput/WorkbookFactory.java | 4 ++
.../excelinput/staxpoi/StaxPoiSheet.java | 27 +++++-----
.../excelinput/staxpoi/StaxPoiWorkbook.java | 17 ++----
.../transforms/excelinput/staxpoi/StaxUtil.java | 14 +++++
.../excelinput/staxpoi/StaxPoiSheetTest.java | 1 -
.../transforms/replacestring/ReplaceString.java | 28 ++++------
.../replacestring/ReplaceStringDialog.java | 2 +
.../replacestring/ReplaceStringMeta.java | 62 +++++++++++-----------
.../replacestring/ReplaceStringTest.java | 1 -
.../hop/pipeline/transforms/sort/SortRows.java | 31 +++++------
.../hop/pipeline/transforms/sort/SortRowsData.java | 10 ++--
.../hop/pipeline/transforms/sort/SortRowsMeta.java | 4 +-
12 files changed, 100 insertions(+), 101 deletions(-)
diff --git a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/WorkbookFactory.java b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/WorkbookFactory.java
index e7baf79..278ba2a 100644
--- a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/WorkbookFactory.java
+++ b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/WorkbookFactory.java
@@ -32,6 +32,10 @@ import org.apache.hop.pipeline.transforms.excelinput.staxpoi.StaxPoiWorkbook;
import java.io.InputStream;
public class WorkbookFactory {
+
+ private WorkbookFactory() {
+ throw new IllegalStateException("Utility class");
+ }
public static IKWorkbook getWorkbook( SpreadSheetType type, String filename, String encoding ) throws HopException {
switch ( type ) {
diff --git a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheet.java b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheet.java
index 30f7aea..c686a4b 100644
--- a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheet.java
+++ b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheet.java
@@ -26,7 +26,15 @@
package org.apache.hop.pipeline.transforms.excelinput.staxpoi;
-import com.google.common.annotations.VisibleForTesting;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TimeZone;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
import org.apache.commons.lang.StringUtils;
import org.apache.hop.core.spreadsheet.IKCell;
import org.apache.hop.core.spreadsheet.IKSheet;
@@ -38,16 +46,7 @@ import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
-
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.TimeZone;
+import com.google.common.annotations.VisibleForTesting;
/**
* Streaming reader for XLSX sheets.<br>
@@ -88,7 +87,8 @@ public class StaxPoiSheet implements IKSheet {
sst = reader.getSharedStringsTable();
styles = reader.getStylesTable();
sheetStream = reader.getSheet( sheetID );
- XMLInputFactory factory = XMLInputFactory.newInstance();
+ XMLInputFactory factory = StaxUtil.safeXMLInputFactory();
+
sheetReader = factory.createXMLStreamReader( sheetStream );
headerRow = new ArrayList<>();
while ( sheetReader.hasNext() ) {
@@ -378,7 +378,8 @@ public class StaxPoiSheet implements IKSheet {
sheetReader.close();
sheetStream.close();
sheetStream = xssfReader.getSheet( sheetId );
- XMLInputFactory factory = XMLInputFactory.newInstance();
+ XMLInputFactory factory = StaxUtil.safeXMLInputFactory();
+
sheetReader = factory.createXMLStreamReader( sheetStream );
}
diff --git a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiWorkbook.java b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiWorkbook.java
index 2af1321..73205be 100644
--- a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiWorkbook.java
+++ b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiWorkbook.java
@@ -67,7 +67,7 @@ public class StaxPoiWorkbook implements IKWorkbook {
private OPCPackage opcpkg;
protected StaxPoiWorkbook() {
- openSheetsMap = new HashMap<String, StaxPoiSheet>();
+ openSheetsMap = new HashMap<>();
this.log = HopLogStore.getLogChannelFactory().create( this );
}
@@ -91,14 +91,14 @@ public class StaxPoiWorkbook implements IKWorkbook {
}
}
- private void openFile( OPCPackage pkg, String encoding ) throws HopException {
+ private void openFile( OPCPackage pkg, String encoding ) throws HopException, IOException, XMLStreamException {
InputStream workbookData = null;
XMLStreamReader workbookReader = null;
try {
reader = new XSSFReader( pkg );
- sheetNameIDMap = new LinkedHashMap<String, String>();
+ sheetNameIDMap = new LinkedHashMap<>();
workbookData = reader.getWorkbookData();
- XMLInputFactory factory = XMLInputFactory.newInstance();
+ XMLInputFactory factory = StaxUtil.safeXMLInputFactory();
workbookReader = factory.createXMLStreamReader( workbookData );
while ( workbookReader.hasNext() ) {
if ( workbookReader.next() == XMLStreamConstants.START_ELEMENT
@@ -117,18 +117,10 @@ public class StaxPoiWorkbook implements IKWorkbook {
throw new HopException( e );
} finally {
if ( workbookReader != null ) {
- try {
workbookReader.close();
- } catch ( XMLStreamException e ) {
- throw new HopException( e );
- }
}
if ( workbookData != null ) {
- try {
workbookData.close();
- } catch ( IOException e ) {
- throw new HopException( e );
- }
}
}
}
@@ -143,6 +135,7 @@ public class StaxPoiWorkbook implements IKWorkbook {
return null;
}
StaxPoiSheet sheet = openSheetsMap.get( sheetID );
+
if ( sheet == null ) {
try {
sheet = new StaxPoiSheet( reader, sheetName, sheetID );
diff --git a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxUtil.java b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxUtil.java
index b301391..9ce162b 100644
--- a/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxUtil.java
+++ b/plugins/transforms/excelinput/src/main/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxUtil.java
@@ -22,6 +22,8 @@
package org.apache.hop.pipeline.transforms.excelinput.staxpoi;
+import javax.xml.XMLConstants;
+import javax.xml.stream.XMLInputFactory;
import org.apache.poi.ss.SpreadsheetVersion;
public class StaxUtil {
@@ -29,6 +31,10 @@ public class StaxUtil {
public static final int MAX_ROWS = DEFAULT_SPREADSHEET_VERSION.getMaxRows();
public static final int MAX_COLUMNS = DEFAULT_SPREADSHEET_VERSION.getMaxColumns();
+ private StaxUtil() {
+ throw new IllegalStateException("Utility class");
+ }
+
public static int extractRowNumber( String position ) {
int startIndex = 0;
while ( !Character.isDigit( position.charAt( startIndex ) ) && startIndex < position.length() ) {
@@ -63,5 +69,13 @@ public class StaxUtil {
return col;
}
+
+ public static final XMLInputFactory safeXMLInputFactory() {
+ XMLInputFactory factory = XMLInputFactory.newInstance();
+ // To prevent from XXE attacks
+ factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
+ factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
+ return factory;
+ }
}
diff --git a/plugins/transforms/excelinput/src/test/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheetTest.java b/plugins/transforms/excelinput/src/test/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheetTest.java
index 1719741..0c362b6 100644
--- a/plugins/transforms/excelinput/src/test/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheetTest.java
+++ b/plugins/transforms/excelinput/src/test/java/org/apache/hop/pipeline/transforms/excelinput/staxpoi/StaxPoiSheetTest.java
@@ -30,7 +30,6 @@ import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
diff --git a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceString.java b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceString.java
index 9084bba..81626a9 100644
--- a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceString.java
+++ b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceString.java
@@ -23,27 +23,24 @@
package org.apache.hop.pipeline.transforms.replacestring;
-import com.google.common.annotations.VisibleForTesting;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.exception.HopTransformException;
-import org.apache.hop.core.row.RowDataUtil;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
+import org.apache.hop.core.row.RowDataUtil;
import org.apache.hop.core.util.StringUtil;
import org.apache.hop.core.util.Utils;
import org.apache.hop.i18n.BaseMessages;
import org.apache.hop.pipeline.Pipeline;
import org.apache.hop.pipeline.PipelineMeta;
import org.apache.hop.pipeline.transform.BaseTransform;
-import org.apache.hop.pipeline.transform.ITransformData;
import org.apache.hop.pipeline.transform.ITransform;
import org.apache.hop.pipeline.transform.TransformMeta;
-import org.apache.hop.pipeline.transform.ITransform;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import com.google.common.annotations.VisibleForTesting;
/**
* Search and replace in string.
@@ -125,7 +122,7 @@ public class ReplaceString extends BaseTransform<ReplaceStringMeta, ReplaceStrin
Object[] rowData = RowDataUtil.resizeArray( row, data.outputRowMeta.size() );
int index = 0;
- Set<Integer> numFieldsAlreadyBeenTransformed = new HashSet<Integer>();
+ Set<Integer> numFieldsAlreadyBeenTransformed = new HashSet<>();
for ( int i = 0; i < data.numFields; i++ ) {
IRowMeta currentRowMeta =
@@ -214,10 +211,8 @@ public class ReplaceString extends BaseTransform<ReplaceStringMeta, ReplaceStrin
Object[] output = getOneRow( getInputRowMeta(), r );
putRow( data.outputRowMeta, output );
- if ( checkFeedback( getLinesRead() ) ) {
- if ( log.isDetailed() ) {
+ if ( checkFeedback( getLinesRead() ) && log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "ReplaceString.Log.LineNumber" ) + getLinesRead() );
- }
}
} catch ( HopException e ) {
boolean sendToErrorRow = false;
@@ -242,12 +237,7 @@ public class ReplaceString extends BaseTransform<ReplaceStringMeta, ReplaceStrin
}
public boolean init() {
-
- if ( super.init() ) {
-
- return true;
- }
- return false;
+ return super.init() ;
}
public void dispose() {
diff --git a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringDialog.java b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringDialog.java
index 95032d0..634109f 100644
--- a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringDialog.java
+++ b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringDialog.java
@@ -224,6 +224,7 @@ public class ReplaceStringDialog extends BaseTransformDialog implements ITransfo
lsDef = new SelectionAdapter() {
+ @Override
public void widgetDefaultSelected( SelectionEvent e ) {
ok();
}
@@ -233,6 +234,7 @@ public class ReplaceStringDialog extends BaseTransformDialog implements ITransfo
// Detect X or ALT-F4 or something that kills this window...
shell.addShellListener( new ShellAdapter() {
+ @Override
public void shellClosed( ShellEvent e ) {
cancel();
}
diff --git a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringMeta.java b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringMeta.java
index 0bd3864..c41b10e 100644
--- a/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringMeta.java
+++ b/plugins/transforms/replacestring/src/main/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringMeta.java
@@ -23,6 +23,8 @@
package org.apache.hop.pipeline.transforms.replacestring;
+import static org.apache.hop.core.ICheckResult.*;
+
import org.apache.commons.lang.StringUtils;
import org.apache.hop.core.CheckResult;
import org.apache.hop.core.ICheckResult;
@@ -96,14 +98,14 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
@Injection( name = "IS_UNICODE", group = "FIELDS" )
private int[] isUnicode;
- public static final String[] caseSensitiveCode = { "no", "yes" };
+ protected static final String[] caseSensitiveCode = { "no", "yes" };
- public static final String[] isUnicodeCode = { "no", "yes" };
+ protected static final String[] isUnicodeCode = { "no", "yes" };
- public static final String[] caseSensitiveDesc = new String[] {
+ protected static final String[] caseSensitiveDesc = new String[] {
BaseMessages.getString( PKG, "System.Combo.No" ), BaseMessages.getString( PKG, "System.Combo.Yes" ) };
- public static final String[] isUnicodeDesc = new String[] {
+ protected static final String[] isUnicodeDesc = new String[] {
BaseMessages.getString( PKG, "System.Combo.No" ), BaseMessages.getString( PKG, "System.Combo.Yes" ) };
public static final int CASE_SENSITIVE_NO = 0;
@@ -114,19 +116,19 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
public static final int IS_UNICODE_YES = 1;
- public static final String[] wholeWordDesc = new String[] {
+ protected static final String[] wholeWordDesc = new String[] {
BaseMessages.getString( PKG, "System.Combo.No" ), BaseMessages.getString( PKG, "System.Combo.Yes" ) };
- public static final String[] wholeWordCode = { "no", "yes" };
+ protected static final String[] wholeWordCode = { "no", "yes" };
public static final int WHOLE_WORD_NO = 0;
public static final int WHOLE_WORD_YES = 1;
- public static final String[] useRegExDesc = new String[] {
+ protected static final String[] useRegExDesc = new String[] {
BaseMessages.getString( PKG, "System.Combo.No" ), BaseMessages.getString( PKG, "System.Combo.Yes" ) };
- public static final String[] useRegExCode = { "no", "yes" };
+ protected static final String[] useRegExCode = { "no", "yes" };
public static final int USE_REGEX_NO = 0;
@@ -397,13 +399,14 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
IHopMetadataProvider metadataProvider ) {
CheckResult cr;
- String errorMessage = "";
+ StringBuilder errorMessage = new StringBuilder();
boolean first = true;
boolean errorFound = false;
if ( prev == null ) {
- errorMessage += BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.NoInputReceived" ) + Const.CR;
- cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, errorMessage, transforminfo );
+ errorMessage.append(BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.NoInputReceived" ))
+ .append(Const.CR);
+ cr = new CheckResult( TYPE_RESULT_ERROR, errorMessage.toString(), transforminfo );
remarks.add( cr );
} else {
@@ -414,18 +417,19 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
if ( v == null ) {
if ( first ) {
first = false;
- errorMessage +=
- BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.MissingInStreamFields" ) + Const.CR;
+ errorMessage.append(
+ BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.MissingInStreamFields" ))
+ .append(Const.CR);
}
errorFound = true;
- errorMessage += "\t\t" + field + Const.CR;
+ errorMessage.append("\t\t").append(field).append(Const.CR);
}
}
if ( errorFound ) {
- cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, errorMessage, transforminfo );
+ cr = new CheckResult( TYPE_RESULT_ERROR, errorMessage.toString(), transforminfo );
} else {
cr =
- new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
+ new CheckResult( TYPE_RESULT_OK, BaseMessages.getString(
PKG, "ReplaceStringMeta.CheckResult.FoundInStreamFields" ), transforminfo );
}
remarks.add( cr );
@@ -437,24 +441,21 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
String field = fieldInStream[ i ];
IValueMeta v = prev.searchValueMeta( field );
- if ( v != null ) {
- if ( v.getType() != IValueMeta.TYPE_STRING ) {
+ if ( v != null && v.getType() != IValueMeta.TYPE_STRING ) {
if ( first ) {
first = false;
- errorMessage +=
- BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.OperationOnNonStringFields" )
- + Const.CR;
+ errorMessage.append(BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.OperationOnNonStringFields" ))
+ .append(Const.CR);
}
errorFound = true;
- errorMessage += "\t\t" + field + Const.CR;
- }
+ errorMessage.append("\t\t").append(field).append(Const.CR);
}
}
if ( errorFound ) {
- cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, errorMessage, transforminfo );
+ cr = new CheckResult( TYPE_RESULT_ERROR, errorMessage.toString(), transforminfo );
} else {
cr =
- new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
+ new CheckResult( TYPE_RESULT_OK, BaseMessages.getString(
PKG, "ReplaceStringMeta.CheckResult.AllOperationsOnStringFields" ), transforminfo );
}
remarks.add( cr );
@@ -464,9 +465,10 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
if ( Utils.isEmpty( fieldInStream[ idx ] ) ) {
cr =
new CheckResult(
- CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
- PKG, "ReplaceStringMeta.CheckResult.InStreamFieldMissing", new Integer( idx + 1 )
- .toString() ), transforminfo );
+ TYPE_RESULT_ERROR, BaseMessages.getString(
+ PKG, "ReplaceStringMeta.CheckResult.InStreamFieldMissing",
+ Integer.toString( idx + 1 )),
+ transforminfo );
remarks.add( cr );
}
@@ -477,9 +479,9 @@ public class ReplaceStringMeta extends BaseTransformMeta implements ITransformMe
for ( int idx = 0; idx < fieldInStream.length; idx++ ) {
for ( int jdx = 0; jdx < fieldInStream.length; jdx++ ) {
if ( fieldInStream[ idx ].equals( fieldInStream[ jdx ] ) && idx != jdx && idx < jdx ) {
- errorMessage =
+ String errMessage =
BaseMessages.getString( PKG, "ReplaceStringMeta.CheckResult.FieldInputError", fieldInStream[ idx ] );
- cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, errorMessage, transforminfo );
+ cr = new CheckResult( TYPE_RESULT_ERROR, errMessage, transforminfo );
remarks.add( cr );
}
}
diff --git a/plugins/transforms/replacestring/src/test/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringTest.java b/plugins/transforms/replacestring/src/test/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringTest.java
index bdc40f8..d9e4785 100644
--- a/plugins/transforms/replacestring/src/test/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringTest.java
+++ b/plugins/transforms/replacestring/src/test/java/org/apache/hop/pipeline/transforms/replacestring/ReplaceStringTest.java
@@ -39,7 +39,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.anyString;
diff --git a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRows.java b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRows.java
index 0e20637..6dc3374 100644
--- a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRows.java
+++ b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRows.java
@@ -23,6 +23,7 @@
package org.apache.hop.pipeline.transforms.sort;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.hop.core.Const;
@@ -138,7 +139,7 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
}
// Just write the data, nothing else
- List<Integer> duplicates = new ArrayList<Integer>();
+ List<Integer> duplicates = new ArrayList<>();
Object[] previousRow = null;
if ( meta.isOnlyPassingUniqueRows() ) {
int index = 0;
@@ -165,19 +166,16 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
int duplicatesIndex = 0;
for ( p = 0; p < data.buffer.size(); p++ ) {
boolean skip = false;
- if ( duplicatesIndex < duplicates.size() ) {
- if ( p == duplicates.get( duplicatesIndex ) ) {
+ if ( duplicatesIndex < duplicates.size() && p == duplicates.get( duplicatesIndex ) ) {
skip = true;
duplicatesIndex++;
- }
}
if ( !skip ) {
data.outputRowMeta.writeData( dos, data.buffer.get( p ) );
}
}
- if ( data.sortSize < 0 ) {
- if ( data.buffer.size() > data.minSortSize ) {
+ if ( data.sortSize < 0 && data.buffer.size() > data.minSortSize ) {
data.minSortSize = data.buffer.size(); // if we did it once, we can do
// it again.
@@ -186,7 +184,6 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
// As such, we're going to lower the min sort size a bit
//
data.minSortSize = (int) Math.round( data.minSortSize * 0.90 );
- }
}
// Clear the list
@@ -203,10 +200,8 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
//
data.freeMemoryPct = Const.getPercentageFreeMemory();
data.freeCounter = 0;
- if ( data.sortSize <= 0 ) {
- if ( log.isDetailed() ) {
+ if ( data.sortSize <= 0 && log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "SortRows.Detailed.AvailableMemory", data.freeMemoryPct ) );
- }
}
} catch ( Exception e ) {
@@ -229,7 +224,7 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
Object[] retval;
// Open all files at once and read one row from each file...
- if ( data.files.size() > 0 && ( data.dis.size() == 0 || data.fis.size() == 0 ) ) {
+ if ( CollectionUtils.isNotEmpty(data.files) && ( data.dis.isEmpty() || data.fis.isEmpty() ) ) {
if ( log.isBasic() ) {
logBasic( BaseMessages.getString( PKG, "SortRows.Basic.OpeningTempFiles", data.files.size() ) );
}
@@ -273,7 +268,7 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
}
}
- if ( data.files.size() == 0 ) {
+ if ( data.files.isEmpty() ) {
// read from in-memory processing
if ( data.getBufferIndex < data.buffer.size() ) {
@@ -285,7 +280,7 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
} else {
// read from disk processing
- if ( data.rowbuffer.size() == 0 ) {
+ if ( data.rowbuffer.isEmpty() ) {
retval = null;
} else {
// We now have "filenr" rows waiting: which one is the smallest?
@@ -399,7 +394,7 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
String[] fieldNames = meta.getFieldName();
data.fieldnrs = new int[ fieldNames.length ];
- List<Integer> toConvert = new ArrayList<Integer>();
+ List<Integer> toConvert = new ArrayList<>();
// Metadata
data.outputRowMeta = inputRowMeta.clone();
@@ -574,13 +569,13 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
data.rowbuffer.clear();
// close any open DataInputStream objects
- if ( ( data.dis != null ) && ( data.dis.size() > 0 ) ) {
+ if ( CollectionUtils.isNotEmpty(data.dis) ) {
for ( DataInputStream dis : data.dis ) {
BaseTransform.closeQuietly( dis );
}
}
// close any open InputStream objects
- if ( ( data.fis != null ) && ( data.fis.size() > 0 ) ) {
+ if ( CollectionUtils.isNotEmpty(data.fis) ) {
for ( InputStream is : data.fis ) {
BaseTransform.closeQuietly( is );
}
@@ -601,8 +596,8 @@ public class SortRows extends BaseTransform<SortRowsMeta, SortRowsData> implemen
/**
* Sort the entire vector, if it is not empty.
*/
- void quickSort( List<Object[]> elements ) throws HopException {
- if ( elements.size() > 0 ) {
+ void quickSort( List<Object[]> elements ) {
+ if ( CollectionUtils.isNotEmpty(elements) ) {
Collections.sort( elements, data.rowComparator );
long nrConversions = 0L;
diff --git a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsData.java b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsData.java
index c92966f..3133399 100644
--- a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsData.java
+++ b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsData.java
@@ -79,11 +79,11 @@ public class SortRowsData extends BaseTransformData implements ITransformData {
public SortRowsData() {
super();
- files = new ArrayList<FileObject>();
- fis = new ArrayList<InputStream>();
- gzis = new ArrayList<GZIPInputStream>();
- dis = new ArrayList<DataInputStream>();
- bufferSizes = new ArrayList<Integer>();
+ files = new ArrayList<>();
+ fis = new ArrayList<>();
+ gzis = new ArrayList<>();
+ dis = new ArrayList<>();
+ bufferSizes = new ArrayList<>();
previous = null; // Heroic
}
diff --git a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsMeta.java b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsMeta.java
index c732c05..c7a5cba 100644
--- a/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsMeta.java
+++ b/plugins/transforms/sort/src/main/java/org/apache/hop/pipeline/transforms/sort/SortRowsMeta.java
@@ -604,7 +604,7 @@ public class SortRowsMeta extends BaseTransformMeta implements ITransformMeta<So
public List<String> getGroupFields() {
if ( this.groupFields == null ) {
for ( int i = 0; i < preSortedField.length; i++ ) {
- if ( preSortedField[ i ] == true ) {
+ if ( preSortedField[ i ] ) {
if ( groupFields == null ) {
groupFields = new ArrayList<>();
}
@@ -616,7 +616,7 @@ public class SortRowsMeta extends BaseTransformMeta implements ITransformMeta<So
}
public boolean isGroupSortEnabled() {
- return ( this.getGroupFields() != null ) ? true : false;
+ return this.getGroupFields() != null ;
}
/**