/** * Default constructor. */ public PGBulkLoaderData() { super(); db = null; // Let's use ISO 8601 format. This in unambiguous with PostgreSQL dateMeta = new ValueMetaDate( "date" ); dateMeta.setConversionMask( "yyyy-MM-dd" ); dateTimeMeta = new ValueMetaDate( "date" ); // Let's keep milliseconds. Didn't find a way to keep microseconds (max resolution with PG) dateTimeMeta.setConversionMask( "yyyy-MM-dd HH:mm:ss.SSS" ); } }
/** * Get the metadata used for conversion to date format See related PDI-4019 * * @param mask * @return */ private ValueMetaInterface getConversionMeta( String mask ) { ValueMetaInterface meta = null; if ( !Utils.isEmpty( mask ) ) { meta = conversionMetaCache.get( mask ); if ( meta == null ) { meta = new ValueMetaDate(); meta.setConversionMask( mask ); conversionMetaCache.put( mask, meta ); } } return meta; }
public ExcelInputData() { super(); workbook = null; filenr = 0; sheetnr = 0; rownr = -1; colnr = -1; valueMetaString = new ValueMetaString( "v" ); valueMetaNumber = new ValueMetaNumber( "v" ); valueMetaDate = new ValueMetaDate( "v" ); valueMetaBoolean = new ValueMetaBoolean( "v" ); } }
@Before public void setup() throws KettlePluginException { rowMeta = spy( new RowMeta() ); groupByMeta = spy( new GroupByMeta() ); mockStatic( ValueMetaFactory.class ); when( ValueMetaFactory.createValueMeta( anyInt() ) ).thenCallRealMethod(); when( ValueMetaFactory.createValueMeta( anyString(), anyInt() ) ).thenCallRealMethod(); when( ValueMetaFactory.createValueMeta( "maxDate", 3, -1, -1 ) ).thenReturn( new ValueMetaDate( "maxDate" ) ); when( ValueMetaFactory.createValueMeta( "minDate", 3, -1, -1 ) ).thenReturn( new ValueMetaDate( "minDate" ) ); when( ValueMetaFactory.createValueMeta( "countDate", 5, -1, -1 ) ).thenReturn( new ValueMetaInteger( "countDate" ) ); when( ValueMetaFactory.getValueMetaName( 3 ) ).thenReturn( "Date" ); when( ValueMetaFactory.getValueMetaName( 5 ) ).thenReturn( "Integer" ); }
@Before public void setup() throws KettlePluginException { mockSpace = mock( VariableSpace.class ); doReturn("N" ).when( mockSpace ).getVariable( any(), anyString() ); rowMeta = spy( new RowMeta() ); memoryGroupByMeta = spy( new MemoryGroupByMeta() ); mockStatic( ValueMetaFactory.class ); when( ValueMetaFactory.createValueMeta( anyInt() ) ).thenCallRealMethod(); when( ValueMetaFactory.createValueMeta( anyString(), anyInt() ) ).thenCallRealMethod(); when( ValueMetaFactory.createValueMeta( "maxDate", 3, -1, -1 ) ).thenReturn( new ValueMetaDate( "maxDate" ) ); when( ValueMetaFactory.createValueMeta( "minDate", 3, -1, -1 ) ).thenReturn( new ValueMetaDate( "minDate" ) ); when( ValueMetaFactory.createValueMeta( "countDate", 5, -1, -1 ) ).thenReturn( new ValueMetaInteger( "countDate" ) ); when( ValueMetaFactory.getValueMetaName( 3 ) ).thenReturn( "Date" ); when( ValueMetaFactory.getValueMetaName( 5 ) ).thenReturn( "Integer" ); }
private RowMeta getInputRowMeta2() { RowMeta inputRowMeta = new RowMeta(); ValueMetaDate vmd1 = new ValueMetaDate( "value1" ); vmd1.setConversionMask( "yyyyMMdd" ); inputRowMeta.addValueMeta( vmd1 ); ValueMetaDate vmd2 = new ValueMetaDate( "value2" ); vmd2.setConversionMask( "yyyy/MM/dd HH:mm:ss.SSS" ); inputRowMeta.addValueMeta( vmd2 ); ValueMetaDate vmd3 = new ValueMetaDate( "value3" ); vmd3.setConversionMask( "yyyyMMdd" ); inputRowMeta.addValueMeta( vmd3 ); ValueMetaDate vmd4 = new ValueMetaDate( "value4" ); vmd4.setConversionMask( "yyyy/MM/dd HH:mm:ss.SSS" ); inputRowMeta.addValueMeta( vmd4 ); return inputRowMeta; }
@Test public void getFieldsWithoutSubject() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); memoryGroupByMeta.setSubjectField( new String[] { null } ); memoryGroupByMeta.setGroupField( new String[] { "date" } ); memoryGroupByMeta.setAggregateField( new String[] { "countDate" } ); memoryGroupByMeta.setAggregateType( new int[] { TYPE_GROUP_COUNT_ANY } ); memoryGroupByMeta.getFields( rowMeta, "Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertNotNull( rowMeta.searchValueMeta( "countDate" ) ); } }
public ValueMetaAndData( String valueName, Object valueData ) throws KettleValueException { this.valueData = valueData; if ( valueData instanceof String ) { this.valueMeta = new ValueMetaString( valueName ); } else if ( valueData instanceof Double ) { this.valueMeta = new ValueMetaNumber( valueName ); } else if ( valueData instanceof Long ) { this.valueMeta = new ValueMetaInteger( valueName ); } else if ( valueData instanceof Date ) { this.valueMeta = new ValueMetaDate( valueName, ValueMetaInterface.TYPE_DATE ); } else if ( valueData instanceof BigDecimal ) { this.valueMeta = new ValueMetaBigNumber( valueName ); } else if ( valueData instanceof Boolean ) { this.valueMeta = new ValueMetaBoolean( valueName ); } else if ( valueData instanceof byte[] ) { this.valueMeta = new ValueMetaBinary( valueName ); } else { this.valueMeta = new ValueMetaSerializable( valueName ); } }
@Test public void getFieldsWithoutSubject() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); groupByMeta.setSubjectField( new String[] { null } ); groupByMeta.setGroupField( new String[] { "date" } ); groupByMeta.setAggregateField( new String[] { "countDate" } ); groupByMeta.setAggregateType( new int[] { TYPE_GROUP_COUNT_ANY } ); groupByMeta.getFields( rowMeta, "Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertNotNull( rowMeta.searchValueMeta( "countDate" ) ); } }
@Test public void getFieldsWithSubject_NoFormat() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); memoryGroupByMeta.setSubjectField( new String[] { "date" } ); memoryGroupByMeta.setGroupField( new String[] {} ); memoryGroupByMeta.setAggregateField( new String[] { "minDate" } ); memoryGroupByMeta.setAggregateType( new int[] { TYPE_GROUP_MIN } ); memoryGroupByMeta.getFields( rowMeta, "Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertEquals( null, rowMeta.searchValueMeta( "minDate" ).getConversionMask() ); }
@Test public void getFieldsWithSubject_NoFormat() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); groupByMeta.setSubjectField( new String[] { "date" } ); groupByMeta.setGroupField( new String[] {} ); groupByMeta.setAggregateField( new String[] { "minDate" } ); groupByMeta.setAggregateType( new int[] { TYPE_GROUP_MIN } ); groupByMeta.getFields( rowMeta, "Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertEquals( null, rowMeta.searchValueMeta( "minDate" ).getConversionMask() ); }
@Test public void lookup_Finds_WithBetweenOperator() throws Exception { RowMeta meta = keysMeta.clone(); meta.setValueMeta( 3, new ValueMetaDate() ); meta.addValueMeta( new ValueMetaInteger() ); ReadAllCache cache = buildCache( "<>,IS NOT NULL,BETWEEN,IS NULL" ); Object[] found = cache.getRowFromCache( meta, new Object[] { -1L, null, new Date( 140 ), new Date( 160 ), null } ); assertArrayEquals( "(140 <= keys[2] <= 160) --> row 4", data[ 4 ], found ); }
@Test public void getFieldsWithSubject_WithFormat() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setConversionMask( "yyyy-MM-dd" ); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); groupByMeta.setSubjectField( new String[] { "date" } ); groupByMeta.setGroupField( new String[] {} ); groupByMeta.setAggregateField( new String[] { "maxDate" } ); groupByMeta.setAggregateType( new int[] { TYPE_GROUP_MAX } ); groupByMeta.getFields( rowMeta, "Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertEquals( "yyyy-MM-dd", rowMeta.searchValueMeta( "maxDate" ).getConversionMask() ); }
@Test public void getFieldsWithSubject_WithFormat() { ValueMetaDate valueMeta = new ValueMetaDate(); valueMeta.setConversionMask( "yyyy-MM-dd" ); valueMeta.setName( "date" ); doReturn( valueMeta ).when( rowMeta ).searchValueMeta( "date" ); memoryGroupByMeta.setSubjectField( new String[] { "date" } ); memoryGroupByMeta.setGroupField( new String[] {} ); memoryGroupByMeta.setAggregateField( new String[] { "maxDate" } ); memoryGroupByMeta.setAggregateType( new int[] { TYPE_GROUP_MAX } ); memoryGroupByMeta.getFields( rowMeta, "Memory Group by", mockInfo, mockNextStep, mockSpace, null, mockIMetaStore ); verify( rowMeta, times( 1 ) ).clear(); verify( rowMeta, times( 1 ) ).addRowMeta( any() ); assertEquals( "yyyy-MM-dd", rowMeta.searchValueMeta( "maxDate" ).getConversionMask() ); }
@Test public void lookup_DoesNotFind_WithBetweenOperator() throws Exception { RowMeta meta = keysMeta.clone(); meta.setValueMeta( 3, new ValueMetaDate() ); meta.addValueMeta( new ValueMetaInteger() ); ReadAllCache cache = buildCache( "<>,IS NOT NULL,BETWEEN,IS NULL" ); Object[] found = cache.getRowFromCache( meta, new Object[] { -1L, null, new Date( 1000 ), new Date( 2000 ), null } ); assertNull( "(1000 <= keys[2] <= 2000) --> none", found ); }
@Test public void lookup_Finds_WithTwoBetweenOperators() throws Exception { RowMeta meta = new RowMeta(); meta.addValueMeta( new ValueMetaInteger() ); meta.addValueMeta( new ValueMetaString() ); meta.addValueMeta( new ValueMetaString() ); meta.addValueMeta( new ValueMetaDate() ); meta.addValueMeta( new ValueMetaDate() ); meta.addValueMeta( new ValueMetaInteger() ); ReadAllCache cache = buildCache( ">,BETWEEN,BETWEEN,IS NULL" ); Object[] found = cache.getRowFromCache( meta, new Object[] { -1L, "1", "3", new Date( 0 ), new Date( 1000 ), null } ); assertArrayEquals( "('1' <= keys[1] <= '3') && (0 <= keys[2] <= 1000) --> row 2", data[ 2 ], found ); }
@Test public void getGetSignature_Date() { ValueMetaDate v = new ValueMetaDate( "DT" ); String accessor = FieldHelper.getAccessor( true, "DT" ); assertEquals( "Date DT = get(Fields.In, \"DT\").getDate(r);", FieldHelper.getGetSignature( accessor, v ) ); assertNotNull( getMethod( FieldHelper.class, "getDate", Object[].class ) ); }
public synchronized ObjectId insertLogEntry( String description ) throws KettleException { ObjectId id = connectionDelegate.getNextLogID(); RowMetaAndData table = new RowMetaAndData(); table.addValue( new ValueMetaInteger( KettleDatabaseRepository.FIELD_REPOSITORY_LOG_ID_REPOSITORY_LOG ), id ); table.addValue( new ValueMetaString( KettleDatabaseRepository.FIELD_REPOSITORY_LOG_REP_VERSION ), getVersion() ); table.addValue( new ValueMetaDate( KettleDatabaseRepository.FIELD_REPOSITORY_LOG_LOG_DATE ), new Date() ); table.addValue( new ValueMetaString( KettleDatabaseRepository.FIELD_REPOSITORY_LOG_LOG_USER ), getUserInfo() != null ? getUserInfo().getLogin() : "admin" ); table.addValue( new ValueMetaString( KettleDatabaseRepository.FIELD_REPOSITORY_LOG_OPERATION_DESC ), description ); connectionDelegate.insertTableRow( KettleDatabaseRepository.TABLE_R_REPOSITORY_LOG, table ); return id; }
private void executeAndCheck( String locale, String expectedWeekNumber ) throws Exception { RowMeta inputRowMeta = new RowMeta(); inputRowMeta.addValueMeta( new ValueMetaDate( "field" ) ); step.setInputRowMeta( inputRowMeta ); SelectValuesMeta stepMeta = new SelectValuesMeta(); stepMeta.allocate( 1, 0, 1 ); stepMeta.getSelectFields()[0] = new SelectField(); stepMeta.getSelectFields()[0].setName( "field" ); stepMeta.getMeta()[ 0 ] = new SelectMetadataChange( stepMeta, "field", null, ValueMetaInterface.TYPE_STRING, -2, -2, ValueMetaInterface.STORAGE_TYPE_NORMAL, "ww", false, locale, null, false, null, null, null ); SelectValuesData stepData = new SelectValuesData(); stepData.select = true; stepData.metadata = true; stepData.firstselect = true; stepData.firstmetadata = true; List<Object[]> execute = TransTestingUtil.execute( step, stepMeta, stepData, 1, true ); TransTestingUtil.assertResult( execute, Collections.singletonList( new Object[] { expectedWeekNumber } ) ); } }
private RowMetaInterface getInputRowMeta() { RowMetaInterface rm = new RowMeta(); rm.addValueMeta( new ValueMetaString( "myGroupField2" ) ); rm.addValueMeta( new ValueMetaString( "myGroupField1" ) ); rm.addValueMeta( new ValueMetaString( "myString" ) ); rm.addValueMeta( new ValueMetaInteger( "myInteger" ) ); rm.addValueMeta( new ValueMetaNumber( "myNumber" ) ); rm.addValueMeta( new ValueMetaBigNumber( "myBigNumber" ) ); rm.addValueMeta( new ValueMetaBinary( "myBinary" ) ); rm.addValueMeta( new ValueMetaBoolean( "myBoolean" ) ); rm.addValueMeta( new ValueMetaDate( "myDate" ) ); rm.addValueMeta( new ValueMetaTimestamp( "myTimestamp" ) ); rm.addValueMeta( new ValueMetaInternetAddress( "myInternetAddress" ) ); return rm; } @Test