[ 
https://issues.apache.org/jira/browse/CAMEL-13993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16932458#comment-16932458
 ] 

KOMMI KISHORE commented on CAMEL-13993:
---------------------------------------

[~acosentino] Thank you.

 


{color:#000080}public class {color}SMBTestConnector {

 {color:#000080}static {color}StringBuilder {color:#660e7a}fileName {color}= 
{color:#000080}new 
{color}StringBuilder({color:#008000}"smb://MY_SMB_PATH{color}{color:#008000}?idempotent=true&noop=true"{color});

 {color:#000080}static {color}DefaultCamelContext {color:#660e7a}camelContext 
{color}= {color:#000080}null{color};
 {color:#000080}public static void {color}main(String args[]) {

 {color:#000080}try{color}{
String proxyPw = GetPasswordDialog.getPassword({color:#008000}"MY USER 
NAME{color}{color:#008000}"{color});
 {color:#808080}fileName.append("&username=").append(proxyUser);
{color} 
{color:#660e7a}fileName{color}.append({color:#008000}"&password="{color}).append(proxyPw);

 {color:#000080}final {color}CsvDataFormat format = createCsvDataFormatter();

 {color:#660e7a}camelContext {color}= {color:#000080}new 
{color}DefaultCamelContext();
 {color:#660e7a}camelContext{color}.addRoutes({color:#000080}new 
{color}RouteBuilder() {
 {color:#808000}@Override
{color} {color:#000080}public void {color}configure() {color:#000080}throws 
{color}Exception {
 from({color:#008000}"direct:start"{color})
 .routeId({color:#008000}"start"{color})
 .process(receiveFile()){color:#808080}
{color} .convertBodyTo(String.{color:#000080}class{color}, 
{color:#008000}"UTF-8"{color})
 .unmarshal({color:#660e7a}format{color})
 .process(buildCsv())
 .to({color:#008000}"file://xlsx_test/?fileName=Test.csv"{color})
 ;
 }
 });

 {color:#660e7a}camelContext{color}.start();
 ProducerTemplate template = 
{color:#660e7a}camelContext{color}.createProducerTemplate();
 template.sendBody({color:#008000}"direct:start"{color}, 
{color:#000080}null{color});
 Thread.sleep({color:#0000ff}5000{color});
 {color:#660e7a}camelContext{color}.stop();
 }{color:#000080}catch {color}(Exception e){
 e.printStackTrace();
 }{color:#000080}finally {color}{
 {color:#000080}try{color}{
 {color:#660e7a}camelContext{color}.stop();
 }{color:#000080}catch {color}(Exception e){

 }

 }
 }

 {color:#000080}private static {color}Processor buildCsv() {
 {color:#000080}return new {color}Processor() {
 {color:#808000}@Override
{color} {color:#000080}public void {color}process(Exchange exchange) 
{color:#000080}throws {color}Exception {
 System.{color:#660e7a}out{color}.println({color:#008000}"Started data 
processing..."{color});
 {color:#000080}final char {color}delim = {color:#008000}';'{color};
 {color:#000080}final char {color}text = {color:#008000}'"'{color};
 {color:#000080}final char {color}textReplace = 
{color:#008000}'{color}{color:#000080}\'{color}{color:#008000}'{color};

 StringBuilder sb = {color:#000080}new {color}StringBuilder();
 Set<String> headerSet = {color:#000080}new {color}HashSet<>();
 List<Object> dataList = (List<Object>)exchange.getIn().getBody();

 {color:#000080}if{color}(!dataList.isEmpty()){

 {color:#000080}for {color}(Object dataObj : dataList) {
 Map<?,?> row = (Map<?,?>)dataObj;
 {color:#000080}for {color}(Object k : row.keySet()) {
 headerSet.add(k.toString());
 }
 }

 List<String> headerList = {color:#000080}new {color}ArrayList<>();
 headerList.addAll(headerSet);
 Collections.sort(headerList);

 {color:#000080}for {color}(String header : headerList) {
 sb.append(text);
 sb.append(header);
 sb.append(text);
 sb.append(delim);
 }
 
sb.append({color:#008000}"{color}{color:#000080}\r\n{color}{color:#008000}"{color});

 {color:#000080}for {color}(Object arr : dataList) {
 Map row = (Map)arr;

 {color:#000080}for {color}(String header:headerList) {
 String val = 
{color:#008000}""{color}+(row.containsKey(header)?row.get(header):{color:#008000}""{color});
 sb.append(text);
 val = val.replace(text, textReplace);
 sb.append(val);
 sb.append(text);
 sb.append(delim);
 }
 
sb.append({color:#008000}"{color}{color:#000080}\r\n{color}{color:#008000}"{color});
 }
 }
 exchange.getIn().setBody(sb.toString());
 }
 };
 }


 {color:#000080}private static {color}CsvDataFormat createCsvDataFormatter() 
{color:#000080}throws {color}Exception {
 CsvDataFormat format = {color:#000080}new {color}CsvDataFormat();
 format.setUseMaps({color:#000080}true{color});

 {color:#000080}final {color}String delimiterValue = {color:#008000}";"{color};
 {color:#000080}final char {color}delimiter = delimiterValue.isEmpty() ? 
{color:#008000}';' {color}: delimiterValue.charAt({color:#0000ff}0{color});
 format.setDelimiter(delimiter);

 {color:#000080}final boolean {color}skipHeaderRecord = 
{color:#000080}true{color};
 format.setSkipHeaderRecord(skipHeaderRecord);

 }

 {color:#000080}return {color}format;
 }


 {color:#000080}private static {color}Processor receiveFile() {
 {color:#000080}return new {color}Processor() {
 {color:#808000}@Override
{color} {color:#000080}public void {color}process(Exchange exchange) 
{color:#000080}throws {color}Exception {
 Message msg = exchange.getIn();

 String endpointUri = {color:#660e7a}fileName{color}.toString();
 {color:#000080}int {color}waitTimeout = {color:#0000ff}15000{color};

 Message fileMessage = pollingConsumerReceiveOnce(endpointUri, waitTimeout);

 {color:#808080}//copy file metadata headers to message
{color} {color:#000080}for {color}(Entry<String,Object> header : 
fileMessage.getHeaders().entrySet()) {
 msg.getHeaders().putIfAbsent(header.getKey(), header.getValue());
 };

 {color:#808080}//read file using configured encoding
{color} InputStream is = 
fileMessage.getBody(InputStream.{color:#000080}class{color});
 String inFileEncoding = {color:#008000}"UTF-8"{color};
 String fileContents = IOUtils.toString(is,inFileEncoding);
 is.close();

 msg.setBody(fileContents);
 }
 };
 }

 {color:#000080}private static {color}Message pollingConsumerReceiveOnce(String 
endpointUri, {color:#000080}int {color}waitTimeout) {color:#000080}throws 
{color}Exception {
 Endpoint endpoint = 
{color:#660e7a}camelContext{color}.getEndpoint(endpointUri);
 SedaPollingConsumer consumer = {color:#000080}new 
{color}SedaPollingConsumer(endpoint);
 {color:#000080}try {color}{
 consumer.start();
 Exchange fileExchange = consumer.receive(waitTimeout);
 {color:#000080}if {color}(fileExchange == {color:#000080}null{color}) {
 {color:#000080}throw new {color}Exception({color:#008000}"No message could be 
recieved from endpoint (if it is a file endpoint, expected file may not be 
present) : " {color}+ endpoint);
 }
 System.{color:#660e7a}out{color}.println({color:#008000}"After Date 
:"{color}+{color:#000080}new {color}Date());
 {color:#000080}return {color}fileExchange.getIn();
 } {color:#000080}finally {color}{
 consumer.stop();
 {color:#660e7a}camelContext{color}.removeEndpoint(endpoint);
 }
 }
}

> SMB Connection from Polling consumer
> ------------------------------------
>
>                 Key: CAMEL-13993
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13993
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 2.22.1
>            Reporter: KOMMI KISHORE
>            Priority: Major
>
> I am trying to connect SMB server with PollingConsumer, but is it not 
> coneecting.
>  
> I tried with FTP and SFTP, both are working as i expected.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to