# REFORMAT Component Throwing Null Values in OutPut

**URL:** https://forum.cloverdx.com/t/reformat-component-throwing-null-values-in-output/949
**Category:** CloverDX Platform
**Created:** [October 19, 2011, 12:00am UTC](https://forum.cloverdx.com/t/reformat-component-throwing-null-values-in-output/949 "2011-10-19T00:00:00Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![naveenvijay](https://avatars.discourse-cdn.com/v4/letter/n/ac8455/32.png) [@naveenvijay](https://forum.cloverdx.com/u/naveenvijay)
#### Post date: [October 19, 2011, 12:00am UTC](https://forum.cloverdx.com/t/reformat-component-throwing-null-values-in-output/949/1 "2011-10-19T00:00:00Z")

</div>

Hi All,

I am using DATA\_READER → REFORMAT → DATA\_WRITER to Read a File, Reformat it to a desired format and also adding logic to filder records so I do not get this in the output. But I am using the Reformat component to check for logic if the line contains the string I want to filer and based on that condition I am setting the Values for my Output.

The following is my code for Reformat (Java):

public int transform(DataRecord source, DataRecord target){

String OBJECTTYPE = GetVal.getString(source[0],“OBJECTTYPE”);  
String USERNAME = GetVal.getString(source[0],“USERNAME”);  
String NOVALUE = GetVal.getString(source[0],“NOVALUE”);  
String OBJECTNAME = GetVal.getString(source[0],“OBJECTNAME”);  
String EVENTDATETIME = GetVal.getString(source[0],“EVENTDATETIME”);  
String EVENTDESCRIPTION = GetVal.getString(source[0],“EVENTDESCRIPTION”);  
String RESOURCE = “3”;

String FinalObjectName = null;  
int i = 0;  
String UName = null;  
String FinalUName = null;

if (USERNAME.contains(“\\”))

{  
UName = USERNAME.split(“\\\\”);  
FinalUName = UName[UName.length - 1];  
System.out.println(“\<–PARSED USERNAME–\>”+FinalUName);

}  
else  
{  
FinalUName = GetVal.getString(source[0],“USERNAME”);  
System.out.println(“\<–FinalUNAME\>”+FinalUName);  
}

System.out.println(“\<–USERNAME–\>” + UName);

String EDateTime = EVENTDATETIME.replace(“.000”, “”);

System.out.println(“\<–EDateTime–\>” + EDateTime);

if (OBJECTNAME.contains(“.aspx”) || OBJECTNAME.contains(“.css”) || OBJECTNAME.contains(“.jpeg”) || OBJECTNAME.contains(“.png”) || OBJECTNAME.contains(“.JPG”) || OBJECTNAME.contains(“.gif”) )  
{  
System.out.println(“No Value”);  
}  
else  
{

String OName = OBJECTNAME.split(“/”);  
FinalObjectName = OName[OName.length - 1];  
String EVENTDESCRIPTION1 = EVENTDESCRIPTION.replace(“\r\n”, “”);  
String ACTION1 = EVENTDESCRIPTION1;  
String TrxnText = “EVENTDESCRIPTION=”+EVENTDESCRIPTION1 + “\<–\>” + “OBJECTNAME=”+FinalObjectName + “\<–\>” + “OBJECTTYPE=”+OBJECTTYPE + “\<–\>” +  
“ACTION=”+ACTION1;

SetVal.setString(target[0],“TRANSACTIONTEXT”,TrxnText);  
SetVal.setString(target[0],“USERNAME”,FinalUName);  
SetVal.setString(target[0],“EVENTDATETIME”,EDateTime);  
SetVal.setString(target[0],“RESOURCE”,RESOURCE);

}

}

catch(Exception ex){  
ex.printStackTrace();  
// String errorMessage=ex.getMessage()+" -\>occured with record :"+counter;  
return SKIP;  
}  
}

The output I am getting is:

|||  
|||  
My Output Values  
|||  
|||

Basically if you see the above line. It puts an empty value with delimiter if the filer condition matches in REFORMAT component.

Can anyone help me with this please. IN A NUTSHELL my question is How will I read a TEXTFILE, 2) look for any matches in the line and Filter those lines 3) Output only the lines I wanted.

Thanks,  
Naveen

---

<div class="post-metadata">

### Author: ![julrych](https://avatars.discourse-cdn.com/v4/letter/j/7ba0ec/32.png) [@julrych](https://forum.cloverdx.com/u/julrych)
#### Post date: [October 19, 2011, 8:45pm UTC](https://forum.cloverdx.com/t/reformat-component-throwing-null-values-in-output/949/2 "2011-10-19T20:45:12Z")

</div>

Hi Naveen,

the reason you are not getting any data on output is that you are missing a return statement in the transform() method. The value returned from transform() specifies to which output port should the data be sent. The

```auto
return 0;

```

will cause CloverETL engine to push the output data to output port $0.

By the way, it seems to me that you could implement the same functionality directly in CTL2 which should make things easier to read. I don’t think that you need java.

---

<div class="post-metadata">

### Author: ![avackova](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@avackova](https://forum.cloverdx.com/u/avackova)
#### Post date: [October 20, 2011, 11:25am UTC](https://forum.cloverdx.com/t/reformat-component-throwing-null-values-in-output/949/3 "2011-10-20T11:25:52Z")

</div>

Hello Naveen,  
you don’t set any values to the output records if the condition matches. If you want just to copy the values from input to output, use _defaultTransform(DataRecord[] inputRecords, DataRecord[] outputRecords)_ method:

```auto
		if (OBJECTNAME.contains(".aspx") || OBJECTNAME.contains(".css")
				|| OBJECTNAME.contains(".jpeg") || OBJECTNAME.contains(".png")
				|| OBJECTNAME.contains(".JPG") || OBJECTNAME.contains(".gif")) {
			
			defaultTransform(source, target);
			
			System.out.println("No Value");
		}

```
