Tuesday, July 20, 2021

Spring Multi DataSource

 Spring Supports for Mulit DataBase JPA


#Add the same in Application.porperties
database1.datasource.url =jdbc:oracle:thin:@localhost:1521:first
database1.datasource.username =first
database1.datasource.password =first
database1.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
database2.datasource.url =jdbc:oracle:thin:@localhost:1521:second
database2.datasource.username =second
database2.datasource.password =second
database2.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver



You would nee to create  two ava files one for primary DB and oher for secoandary, 

Primary class to be annotated with 
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.multi.db.primary.repo",
        entityManagerFactoryRef = "databas1EntityManagerFactory",
        transactionManagerRef= "databas1TransactionManager)

would also need belwo given funcions 

@Bean(name = "datasource1")
  @Primary
  public DataSource dataSource1(){
    return database1SourcePorperties()
        .initializeDataSourceBuilder()
        .type(HikariDataSource.class).build();
  }
  
  @Primary
  @Bean(name = "databas1EntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean databas1EntityManagerFactory(EntityManagerFactoryBuilder builder) {
      return builder
              .dataSource(dataSource1())
              .packages(Users.class)
              .build();
  }
  
  @Bean
  @Primary
  @ConfigurationProperties("database1.datasource")
  public DataSourceProperties database1SourcePorperties() {
    return new DataSourceProperties();
  }
  
  @Bean(name="databas1TransactionManager")
  @Primary
  public JpaTransactionManager db1TM(final @Qualifier ("databas1EntityManagerFactory") LocalContainerEntityManagerFactoryBean db1Factorybean) {
      return new JpaTransactionManager(db1Factorybean.getObject());
  }


#Complete class for Secondary DataSource

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.multi.db.secondary.repo",
        entityManagerFactoryRef = "database2EntityManagerFactory",
        transactionManagerRef= "database2TransactionManager"
)
public class SecondaryDataSource {
  
  @Bean(name = "datasource2")
  public DataSource dataSource2(){
      return database2SourcePorperties().initializeDataSourceBuilder().type(BasicDataSource.class).build();
  }
  
  @Bean
  @ConfigurationProperties("database2.datasource")
  public DataSourceProperties database2SourcePorperties() {
    return new DataSourceProperties();
  }
  
  
  @Bean(name = "database2EntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean databas2EntityManagerFactory(EntityManagerFactoryBuilder builder) {
      return builder
              .dataSource(dataSource2())
              .packages("com.multi.db.secondary")
              .build();
  }

  
 
  @Bean(name="database2TransactionManager")
  public JpaTransactionManager db2TM(final @Qualifier ("database2EntityManagerFactory") LocalContainerEntityManagerFactoryBean db2Factorybean) {
      return new JpaTransactionManager(db2Factorybean.getObject());
  }

}

Wednesday, January 23, 2019

Spring -kafka Integration

Spring Boot Kafka Configuration for Consumer


props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, CustomDeserializer.class);
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_DOC,"latest");
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,1000);
//props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG,5000);
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG,2000);

@Bean
public KafkaListenerContainerFactory> kafkaListenerContainerFactory(){
ConcurrentKafkaListenerContainerFactory factory= new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setConcurrency(4);
factory.getContainerProperties().setPollTimeout(100L);
factory.getContainerProperties().setIdleEventInterval(6000L);
factory.getContainerProperties().setErrorHandler(errorHandler);


return factory;
}

@Bean
public ConsumerFactory consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs());
}

Friday, May 27, 2016

Camel Kafka Integration Code




<bean id="basic" class="com.jet.camel.kafka.BodyConverter"/>


  <camel:camelContext xmlns="http://camel.apache.org/schema/spring" trace="false" id="kafkaContextProducer">
  <camel:propertyPlaceholder location="classpath:kafka.config.properties" cache="true" id="ppholder1" />


  <camel:route id="kafkaProducer" streamCache="true">
  <camel:from uri="direct:setData"/>
  <camel:log message="body :: ${body}  headers ::  ${headers}  "/>
<!-- <camel:convertBodyTo type="java.lang.String"/> -->

<bean ref="basic" method="converter"/>
<camel:log message="Producer body :: ${body} "/>
<camel:to uri="kafka:{{kafka.server}}:{{kafka.port}}?groupId=visitor&topic={{kafka.topic}}&producerType=sync&serializerClass=kafka.serializer.StringEncoder"/>
  </camel:route>


  <camel:route id="kafkaProducerVM"  streamCache="true">
  <camel:from uri="vm:tokafka?waitForTaskToComplete=Never"/>
<camel:doTry>
<camel:to uri="direct:setData"/>
<camel:doCatch>
<camel:exception>java.lang.Exception</camel:exception>
<camel:setBody> <camel:simple>BGW-Kafka#${exception.stacktrace} </camel:simple> </camel:setBody>
<camel:to uri="file:/opt/fuse/app/fuse/data/mislog?fileName=ErrorReport-${date:now:yyyyMMdd}.log&fileExist=Append" />
<camel:to uri="stream:out"/>
</camel:doCatch>
</camel:doTry>
  </camel:route>
 
  </camel:camelContext>

Camel Consumer ::

<!--    Java Class for all necessary Functionality -->
   <bean id="basic" class="com.jet.camel.kafka.BodyConverter"/>
 
<!--   Bean For Connecting With ICon DB -->
  <bean id="poolDS" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<property name="url" value="jdbc:mysql://${db.host}:${db.port}/${db.name}" />
<property name="user" value="${db.user}" />
<property name="password" value="${db.password}" />
</bean>

<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="DataSource" ref="poolDS" />
</bean>

<!-- Bean For Connecting With ICon DB -->
  <bean id="poolDSBGW" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<property name="url" value="jdbc:mysql://${db.host}:${db.port}/${db.billname}" />
<property name="user" value="${db.billuser}" />
<property name="password" value="${db.billpassword}" />
</bean>


    <bean id="sqlBGW" class="org.apache.camel.component.sql.SqlComponent">
<property name="DataSource" ref="poolDSBGW" />
</bean>


  <osgix:cm-properties id="preProps" persistent-id="kafka.properties" />
<ctx:property-placeholder properties-ref="preProps" />

  <camelContext xmlns="http://camel.apache.org/schema/spring" trace="true" id="kafkaContext">
  <camel:propertyPlaceholder location="classpath:kafka.config.properties,classpath:sql.properties" cache="true" id="ppholder1" />
  <camel:route id="mainKafkaRoute">
  <camel:from uri="kafka:{{kafka.server}}:{{kafka.port}}?groupId=visitor&topic={{kafka.topic}}&
zookeeperHost={{zookeeper.host}}&zookeeperPort={{zookeeper.port}}
  &autoOffsetReset=smallest&consumersCount=1"/>
 <camel:doTry>
 <camel:log message="Kafka Consumer Body ::  ${body}"/>
 <camel:to uri="file:/opt/fuse/app/fuse/data/mislog?fileName=KafKaConsumer-${date:now:yyyyMMdd}.log&fileExist=Append" />
 <bean ref="basic" method="parseBody"/>
 <camel:log message="Kafka Consumer headers ::  ${headers}"/>
 <camel:to uri="direct:callQuery"/>
 
<camel:doCatch>
<camel:exception>java.lang.Exception</camel:exception>
<camel:setBody> <camel:simple>$BGW-Kafka#${header.nowTime}#${headers}#${exception.stacktrace}</camel:simple> </camel:setBody>
<camel:to uri="file:/opt/fuse/app/fuse/data/mislog?fileName=ErrorReport-${date:now:yyyyMMdd}.log&fileExist=Append"/>
</camel:doCatch>
 </camel:doTry>
  </camel:route>


Saturday, April 2, 2016

Camel Cache Component



Below are code snippets to configure cache in Camel and Fuse ESB



Initializing Cache Component

 <camel:route autoStartup="true">
        <camel:from uri="cache://Cache?maxElementsInMemory=1500&memoryStoreEvictionPolicy=MemoryStoreEvictionPolicy.LFU&diskExpiryThreadIntervalSeconds=864000&overflowToDisk=true&eternal=true&timeToIdleSeconds=86400"/>
       <camel:log message="Cahce operation done is : ${header.CamelCacheOperation} on Key ${header.CamelCacheKey}"/>
                  
                    <camel:to uri="mock:end"/>
 </camel:route>


Add Operation ---:

"<camel:setHeader headerName="CamelCacheOperation">
                            <camel:constant>CamelCacheAdd</camel:constant>              
                            </camel:setHeader>
                            <camel:setHeader headerName="CamelCacheEternal">
                                   <camel:constant>true</camel:constant>
                               </camel:setHeader>
                            <camel:setHeader headerName="CamelCacheKey">
                                <camel:simple>${header.key}</camel:simple>
                            </camel:setHeader>

 <camel:to uri="cache://Cache"/>


Update Operation --:

<camel:setHeader headerName="CamelCacheOperation">
                    <camel:constant>CamelCacheUpdate</camel:constant>              
                </camel:setHeader>
                <camel:setHeader headerName="CamelCacheKey">
                    <camel:simple>${header.key}</camel:simple>
                </camel:setHeader>
                <camel:setHeader headerName="CamelCacheEternal">
                       <camel:constant>true</camel:constant>
                   </camel:setHeader>

<camel:to uri="cache://Cache"/>


Delete Operation --:



<camel:setHeader headerName="CamelCacheOperation">
                        <camel:simple>CamelCacheDelete</camel:simple>
                </camel:setHeader>
                <camel:setHeader headerName="CamelCacheKey">
                    <camel:simple>${header.key}</camel:simple>
                </camel:setHeader>

<camel:to uri="cache://Cache"/>  

Get Operation --:

<camel:setHeader headerName="CamelCacheOperation">
                        <camel:simple>CamelCacheGet</camel:simple>
                </camel:setHeader>
                <camel:setHeader headerName="CamelCacheKey">
                    <camel:simple>${header.key}</camel:simple>
                </camel:setHeader>

<camel:to uri="cache://Cache"/>


Also add Camel:Cache feature in Fuse, Which creates an Instance of ECChache




Tuesday, December 23, 2014

ZK Charts Dynamic Theme



Use this below given class make changes in your desired theme , call OxyentTheme.Theme in set Theme method of Charts

import org.zkoss.chart.Theme;
import org.zkoss.chart.Theme.ThemeImpl;

public class OxyentTheme implements Theme  {

 public static final Theme DEFAULT = ThemeImpl.DEFAULT;
 public static final Theme DARK_BLUE = ThemeImpl.DARK_BLUE;
 public static final Theme DARK_GREEN = ThemeImpl.DARK_GREEN;
 public static final Theme GRAY = ThemeImpl.GRAY;
 public static final Theme GRID = ThemeImpl.GRID;
 public static final Theme SKIES = ThemeImpl.SKIES;

 public static enum ThemeImpl
   implements Theme
 {
   DEFAULT("'DefaultTheme'"),  DARK_BLUE("{colors:[\"#DDDF0D\",\"#55BF3B\",\"#DF5353\",\"#7798BF\",\"#aaeeee\",\"#ff0066\",\"#eeaaee\",\"#55BF3B\",\"#DF5353\",\"#7798BF\",\"#aaeeee\"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:1,y2:1},stops:[[0,\"rgb(48, 48, 96)\"],[1,\"rgb(0, 0, 0)\"]]},borderColor:\"#000000\",borderWidth:2,className:\"dark-container\",plotBackgroundColor:\"rgba(255, 255, 255, .1)\",plotBorderColor:\"#CCCCCC\",plotBorderWidth:1},title:{style:{color:\"#C0C0C0\",font:'bold 16px \"Trebuchet MS\", Verdana, sans-serif'}},subtitle:{style:{color:\"#666666\",font:'bold 12px \"Trebuchet MS\", Verdana, sans-serif'}},xAxis:{gridLineColor:\"#333333\",gridLineWidth:1,labels:{style:{color:\"#A0A0A0\"}},lineColor:\"#A0A0A0\",tickColor:\"#A0A0A0\",title:{style:{color:\"#CCC\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},yAxis:{gridLineColor:\"#333333\",labels:{style:{color:\"#A0A0A0\"}},lineColor:\"#A0A0A0\",minorTickInterval:null,tickColor:\"#A0A0A0\",tickWidth:1,title:{style:{color:\"#CCC\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},tooltip:{backgroundColor:\"rgba(0, 0, 0, 0.75)\",style:{color:\"#F0F0F0\"}},toolbar:{itemStyle:{color:\"silver\"}},plotOptions:{line:{dataLabels:{color:\"#CCC\"},marker:{lineColor:\"#333\"}},spline:{marker:{lineColor:\"#333\"}},scatter:{marker:{lineColor:\"#333\"}},candlestick:{lineColor:\"white\"}},legend:{itemStyle:{font:\"9pt Trebuchet MS, Verdana, sans-serif\",color:\"#A0A0A0\"},itemHoverStyle:{color:\"#FFF\"},itemHiddenStyle:{color:\"#444\"}},credits:{style:{color:\"#666\"}},labels:{style:{color:\"#CCC\"}},navigation:{buttonOptions:{symbolStroke:\"#DDDDDD\",hoverSymbolStroke:\"#FFFFFF\",theme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#606060\"],[0.6,\"#333333\"]]},stroke:\"#000000\"}}},rangeSelector:{buttonTheme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},stroke:\"#000000\",style:{color:\"#CCC\",fontWeight:\"bold\"},states:{hover:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#BBB\"],[0.6,\"#888\"]]},stroke:\"#000000\",style:{color:\"white\"}},select:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.1,\"#000\"],[0.3,\"#333\"]]},stroke:\"#000000\",style:{color:\"yellow\"}}}},inputStyle:{backgroundColor:\"#333\",color:\"silver\"},labelStyle:{color:\"silver\"}},navigator:{handles:{backgroundColor:\"#666\",borderColor:\"#AAA\"},outlineColor:\"#CCC\",maskFill:\"rgba(16, 16, 16, 0.5)\",series:{color:\"#7798BF\",lineColor:\"#A6C7ED\"}},scrollbar:{barBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},barBorderColor:\"#CCC\",buttonArrowColor:\"#CCC\",buttonBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},buttonBorderColor:\"#CCC\",rifleColor:\"#FFF\",trackBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,\"#000\"],[1,\"#333\"]]},trackBorderColor:\"#666\"},legendBackgroundColor:\"rgba(0, 0, 0, 0.5)\",legendBackgroundColorSolid:\"rgb(35, 35, 70)\",dataLabelsColor:\"#444\",textColor:\"#C0C0C0\",maskColor:\"rgba(255,255,255,0.3)\"}"),  DARK_GREEN("{colors:[\"#DDDF0D\",\"#55BF3B\",\"#DF5353\",\"#7798BF\",\"#aaeeee\",\"#ff0066\",\"#eeaaee\",\"#55BF3B\",\"#DF5353\",\"#7798BF\",\"#aaeeee\"],chart:{backgroundColor:{linearGradient:[0,0,250,500],stops:[[0,\"rgb(48, 96, 48)\"],[1,\"rgb(0, 0, 0)\"]]},borderColor:\"#000000\",borderWidth:2,className:\"dark-container\",plotBackgroundColor:\"rgba(255, 255, 255, .1)\",plotBorderColor:\"#CCCCCC\",plotBorderWidth:1},title:{style:{color:\"#C0C0C0\",font:'bold 16px \"Trebuchet MS\", Verdana, sans-serif'}},subtitle:{style:{color:\"#666666\",font:'bold 12px \"Trebuchet MS\", Verdana, sans-serif'}},xAxis:{gridLineColor:\"#333333\",gridLineWidth:1,labels:{style:{color:\"#A0A0A0\"}},lineColor:\"#A0A0A0\",tickColor:\"#A0A0A0\",title:{style:{color:\"#CCC\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},yAxis:{gridLineColor:\"#333333\",labels:{style:{color:\"#A0A0A0\"}},lineColor:\"#A0A0A0\",minorTickInterval:null,tickColor:\"#A0A0A0\",tickWidth:1,title:{style:{color:\"#CCC\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},tooltip:{backgroundColor:\"rgba(0, 0, 0, 0.75)\",style:{color:\"#F0F0F0\"}},toolbar:{itemStyle:{color:\"silver\"}},plotOptions:{line:{dataLabels:{color:\"#CCC\"},marker:{lineColor:\"#333\"}},spline:{marker:{lineColor:\"#333\"}},scatter:{marker:{lineColor:\"#333\"}},candlestick:{lineColor:\"white\"}},legend:{itemStyle:{font:\"9pt Trebuchet MS, Verdana, sans-serif\",color:\"#A0A0A0\"},itemHoverStyle:{color:\"#FFF\"},itemHiddenStyle:{color:\"#444\"}},credits:{style:{color:\"#666\"}},labels:{style:{color:\"#CCC\"}},navigation:{buttonOptions:{symbolStroke:\"#DDDDDD\",hoverSymbolStroke:\"#FFFFFF\",theme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#606060\"],[0.6,\"#333333\"]]},stroke:\"#000000\"}}},rangeSelector:{buttonTheme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},stroke:\"#000000\",style:{color:\"#CCC\",fontWeight:\"bold\"},states:{hover:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#BBB\"],[0.6,\"#888\"]]},stroke:\"#000000\",style:{color:\"white\"}},select:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.1,\"#000\"],[0.3,\"#333\"]]},stroke:\"#000000\",style:{color:\"yellow\"}}}},inputStyle:{backgroundColor:\"#333\",color:\"silver\"},labelStyle:{color:\"silver\"}},navigator:{handles:{backgroundColor:\"#666\",borderColor:\"#AAA\"},outlineColor:\"#CCC\",maskFill:\"rgba(16, 16, 16, 0.5)\",series:{color:\"#7798BF\",lineColor:\"#A6C7ED\"}},scrollbar:{barBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},barBorderColor:\"#CCC\",buttonArrowColor:\"#CCC\",buttonBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,\"#888\"],[0.6,\"#555\"]]},buttonBorderColor:\"#CCC\",rifleColor:\"#FFF\",trackBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,\"#000\"],[1,\"#333\"]]},trackBorderColor:\"#666\"},legendBackgroundColor:\"rgba(0, 0, 0, 0.5)\",legendBackgroundColorSolid:\"rgb(35, 35, 70)\",dataLabelsColor:\"#444\",textColor:\"#C0C0C0\",maskColor:\"rgba(255,255,255,0.3)\"}"),  GRAY("{colors:[\"#DDDF0D\",\"#7798BF\",\"#55BF3B\",\"#DF5353\",\"#aaeeee\",\"#ff0066\",\"#eeaaee\",\"#55BF3B\",\"#DF5353\",\"#7798BF\",\"#aaeeee\"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,'rgb(96,96,96)'],[1,'rgb(16,16,16)']]},borderWidth:0,borderRadius:15,plotBackgroundColor:null,plotShadow:false,plotBorderWidth:0},title:{style:{color:'#FFF',font:'16px Lucida Grande,Lucida Sans Unicode,Verdana,Arial,Helvetica,sans-serif'}},subtitle:{style:{color:'#DDD',font:'12px Lucida Grande,Lucida Sans Unicode,Verdana,Arial,Helvetica,sans-serif'}},xAxis:{gridLineWidth:0,lineColor:'#999',tickColor:'#999',labels:{style:{color:'#999',fontWeight:'bold'}},title:{style:{color:'#AAA',font:'bold 12px Lucida Grande,Lucida Sans Unicode,Verdana,Arial,Helvetica,sans-serif'}}},yAxis:{alternateGridColor:null,minorTickInterval:null,gridLineColor:'rgba(255,255,255,.1)',minorGridLineColor:'rgba(255,255,255,0.07)',lineWidth:0,tickWidth:0,labels:{style:{color:'#999',fontWeight:'bold'}},title:{style:{color:'#AAA',font:'bold 12px Lucida Grande,Lucida Sans Unicode,Verdana,Arial,Helvetica,sans-serif'}}},legend:{itemStyle:{color:'#CCC'},itemHoverStyle:{color:'#FFF'},itemHiddenStyle:{color:'#333'}},labels:{style:{color:'#CCC'}},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,'rgba(96,96,96,.8)'],[1,'rgba(16,16,16,.8)']]},borderWidth:0,style:{color:'#FFF'}},plotOptions:{series:{shadow:true},line:{dataLabels:{color:'#CCC'},marker:{lineColor:'#333'}},spline:{marker:{lineColor:'#333'}},scatter:{marker:{lineColor:'#333'}},candlestick:{lineColor:'white'}},toolbar:{itemStyle:{color:'#CCC'}},navigation:{buttonOptions:{symbolStroke:'#DDDDDD',hoverSymbolStroke:'#FFFFFF',theme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,'#606060'],[0.6,'#333333']]},stroke:'#000000'}}},rangeSelector:{buttonTheme:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,'#888'],[0.6,'#555']]},stroke:'#000000',style:{color:'#CCC',fontWeight:'bold'},states:{hover:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,'#BBB'],[0.6,'#888']]},stroke:'#000000',style:{color:'white'}},select:{fill:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.1,'#000'],[0.3,'#333']]},stroke:'#000000',style:{color:'yellow'}}}},inputStyle:{backgroundColor:'#333',color:'silver'},labelStyle:{color:'silver'}},navigator:{handles:{backgroundColor:'#666',borderColor:'#AAA'},outlineColor:'#CCC',maskFill:'rgba(16,16,16,0.5)',series:{color:'#7798BF',lineColor:'#A6C7ED'}},scrollbar:{barBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,'#888'],[0.6,'#555']]},barBorderColor:'#CCC',buttonArrowColor:'#CCC',buttonBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0.4,'#888'],[0.6,'#555']]},buttonBorderColor:'#CCC',rifleColor:'#FFF',trackBackgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,'#000'],[1,'#333']]},trackBorderColor:'#666'},legendBackgroundColor:'rgba(48,48,48,0.8)',legendBackgroundColorSolid:'rgb(70,70,70)',dataLabelsColor:'#444',textColor:'#E0E0E0',maskColor:'rgba(255,255,255,0.3)'}"),  GRID("{colors:[\"#058DC7\",\"#50B432\",\"#ED561B\",\"#DDDF00\",\"#24CBE5\",\"#64E572\",\"#FF9655\",\"#FFF263\",\"#6AF9C4\"],chart:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:1,y2:1},stops:[[0,\"rgb(255, 255, 255)\"],[1,\"rgb(240, 240, 255)\"]]},borderWidth:2,plotBackgroundColor:\"rgba(255, 255, 255, .9)\",plotShadow:true,plotBorderWidth:1},title:{style:{color:\"#000\",font:'bold 16px \"Trebuchet MS\", Verdana, sans-serif'}},subtitle:{style:{color:\"#666666\",font:'bold 12px \"Trebuchet MS\", Verdana, sans-serif'}},xAxis:{gridLineWidth:1,lineColor:\"#000\",tickColor:\"#000\",labels:{style:{color:\"#000\",font:\"11px Trebuchet MS, Verdana, sans-serif\"}},title:{style:{color:\"#333\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},yAxis:{minorTickInterval:\"auto\",lineColor:\"#000\",lineWidth:1,tickWidth:1,tickColor:\"#000\",labels:{style:{color:\"#000\",font:\"11px Trebuchet MS, Verdana, sans-serif\"}},title:{style:{color:\"#333\",fontWeight:\"bold\",fontSize:\"12px\",fontFamily:\"Trebuchet MS, Verdana, sans-serif\"}}},legend:{itemStyle:{font:\"9pt Trebuchet MS, Verdana, sans-serif\",color:\"black\"},itemHoverStyle:{color:\"#039\"},itemHiddenStyle:{color:\"gray\"}},labels:{style:{color:\"#99b\"}},navigation:{buttonOptions:{theme:{stroke:\"#CCCCCC\"}}}}"),  SKIES("{colors:[\"#BDB6C3\",\"#BDB6C3\",\"#BDB6C3\",\"#72727F\",\"#1F949A\",\"#82914E\",\"#86777F\",\"#42A07B\"],chart:{className:\"skies\",borderWidth:0,plotShadow:true,plotBackgroundImage:\"http://commons.wikimedia.org/wiki/File:Khanda_Blue_wEffects.jpg\",plotBackgroundColor:{linearGradient:[0,0,250,500],stops:[[0,\"rgba(255, 255, 255, 1)\"],[1,\"rgba(255, 255, 255, 0)\"]]},plotBorderWidth:1},title:{style:{color:\"#3E576F\",font:\"16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif\"}},subtitle:{style:{color:\"#6D869F\",font:\"12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif\"}},xAxis:{gridLineWidth:0,lineColor:\"#C0D0E0\",tickColor:\"#C0D0E0\",labels:{style:{color:\"#666\",fontWeight:\"bold\"}},title:{style:{color:\"#666\",font:\"12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif\"}}},yAxis:{alternateGridColor:\"rgba(255, 255, 255, .5)\",lineColor:\"#C0D0E0\",tickColor:\"#C0D0E0\",tickWidth:1,labels:{style:{color:\"#666\",fontWeight:\"bold\"}},title:{style:{color:\"#666\",font:\"12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif\"}}},legend:{itemStyle:{font:\"9pt Trebuchet MS, Verdana, sans-serif\",color:\"#3E576F\"},itemHoverStyle:{color:\"black\"},itemHiddenStyle:{color:\"silver\"}},labels:{style:{color:\"#3E576F\"}}}");
 
   private String _json;
 
   private ThemeImpl(String json)
   {
     this._json = json;
   }
 
   public String toJSONString()
   {
     return this._json;
   }
 }




//public static void main(String[] args) {
// for(ThemeImpl t: ThemeImpl.values()){
// System.out.println(t.name()+"\n"+t.toJSONString());
//}
//}

@Override
public String toJSONString() {
// TODO Auto-generated method stub
return null;
}
}

Monday, October 6, 2014

JSOUP



import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;

public class JsoupExtractor {
  List list = new ArrayList();

  public void read(String URL) {
    try {

      Document doc = Jsoup.connect(URL).get();

      Iterator itr = doc.getElementsByClass("wikitable").select("tbody").select("tr").iterator();
      boolean flag = true;
      while (itr.hasNext()) {
        if (flag) {
          itr.next();
          flag = false;
          continue;
        }

        Element temp = itr.next();
        Elements temp2 = temp.select("td");
        String country = (temp2.get(0).select("i").select("b").select("a").attr("title"));
        if (country == null || country.equals(""))
          country = (temp2.get(0).select("b").select("a").attr("title"));

        String list = (temp2.get(4).text());

        // if (country.equals("Zambia"))
        System.out.println(country + "," + list.replaceAll("  ", ";"));

        // writeToFile(country + "," + list.replaceAll("  ", ";"));

      }


      // Elements span = table.select("a");
      // for (Element s : span)
      // System.out.println(s.attr("title"));

    } catch (Exception e) {
      e.printStackTrace();
    }
  }


  // ===========================================
  private void writeToFile(String currCountry2) {
    try {
      FileOutputStream fos = new FileOutputStream("/Users/Desktop/IB/neighbour.txt", true);
      PrintStream ps = new PrintStream(fos);
      ps.println(currCountry2);
      ps.close();
      fos.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

Pom.xml Entry


  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.7.3</version>

</dependency>

Thursday, September 30, 2010

MM7 SOAP Using SAAJ

import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.util.*;
import java.net.*;
import java.util.Date;


import javax.mail.internet.InternetHeaders;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.codec.*;
import org.apache.commons.codec.binary.Base64;

//import sun.misc.BASE64Encoder;

public class MMS_Client2 {

public void mmsSender(String sender, String msisdn, String mmscurl, String vasid, String vaspId, String contentPath, String subject,String password)
{

try {
Calendar today = Calendar.getInstance();
String strdate = formatN(""+today.get(Calendar.YEAR),4) + formatN(""+(today.get(Calendar.MONTH)+1),2) + formatN(""+(today.get(Calendar.DATE)+1),2);
strdate=strdate.substring(0,4)+"-"+strdate.substring(4,6)+"-"+strdate.substring(6,8);
//System.out.println(strdate);

SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();

// Next, create the actual message
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING,"utf-8");
message.setProperty(SOAPMessage.WRITE_XML_DECLARATION,"true");


// Create objects for the message parts
SOAPPart soapPart = message.getSOAPPart();
soapPart.addMimeHeader("Content-Type", "multipart/related");
soapPart.addMimeHeader("Content-Transfer-Encoding", "binary");
//soapPart.addMimeHeader("SOAPAction", "\"\"");
String authorization = toBASE64(password,0);
soapPart.addMimeHeader("Authorization", "Basic " + authorization.trim());
//soapPart.addMimeHeader("Host", "59.161.254.30:10023");

// -------------------Envelope\-----------------------

SOAPEnvelope envelope = soapPart.getEnvelope();
//envelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
//envelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");


// ---------------------------HEAD PART--------------------------
envelope.getHeader().detachNode();
SOAPHeader sh = envelope.addHeader();

Date dt = new Date();
SOAPHeaderElement shElement = sh.addHeaderElement(envelope.createName("TransactionID", "mm7", "http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"));
//shElement.setActor("");
shElement.setMustUnderstand(true);


shElement.addTextNode("mivas" + ((dt.getMinutes() + dt.getSeconds() * 60) / dt.getSeconds()));
// ----------------------------------Body Part ----------------------------
// Populate the body
// Create the main element and namespace
SOAPBody body = envelope.getBody();
SOAPBodyElement sbe = body.addBodyElement(envelope.createName("SubmitReq", "mm7", "http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"));
sbe.addChildElement("MM7Version").addTextNode("5.3.0");
SOAPElement senderID = sbe.addChildElement("SenderIdentification");
senderID.addChildElement("VASPID").addTextNode(vaspId);
//senderID.addChildElement("VASID" ).addTextNode(vasid);
SOAPElement senderadd = senderID.addChildElement("SenderAddress" );
senderadd.addChildElement("Number").addTextNode(sender);

SOAPElement Recipients = sbe.addChildElement("Recipients" );
SOAPElement To = Recipients.addChildElement("To" );
To.addChildElement("Number").addTextNode(msisdn);

sbe.addChildElement("MessageClass").addTextNode("Personal");
sbe.addChildElement("ExpiryDate").addTextNode(strdate+"T2H46M40S");
sbe.addChildElement("DeliveryReport").addTextNode("false");
sbe.addChildElement("ReadReply").addTextNode("false");
sbe.addChildElement("Priority").addTextNode("Normal");
sbe.addChildElement("Subject").addTextNode(subject);


// All attachments are contained in a multipart attachment
MimeMultipart aMultiPart = new MimeMultipart("related");
//System.setProperty(" mail.mime.multipart.ignoreexistingboundaryparameter", "true");

// First text
InternetHeaders someText1Headers = new InternetHeaders();
someText1Headers.addHeader("Content-Type", "text/plain; charset=utf-8");
someText1Headers.addHeader("Content-ID", "");
someText1Headers.addHeader("Content-Transfer-Encoding","7bit");
someText1Headers.addHeader("Content-Disposition","attachment");// filename=MMtext0.txt
MimeBodyPart aTextPart1 = new MimeBodyPart(someText1Headers, "MMS First text".getBytes("UTF-8"));
aMultiPart.addBodyPart(aTextPart1);

// Second text
/* InternetHeaders someText2Headers = new InternetHeaders();
someText2Headers.addHeader("Content-Type", "text/plain; charset=utf-8");
someText2Headers.addHeader("Content-ID", "");
MimeBodyPart aTextPart2 = new MimeBodyPart(someText2Headers, "MMS Second text".getBytes("UTF-8"));
aMultiPart.addBodyPart(aTextPart2);*/

InternetHeaders someImageHeaders = new InternetHeaders();
someImageHeaders.addHeader("Content-Type", "image/jpeg");
someImageHeaders.addHeader("Content-Transfer-Encoding", "base64");
someImageHeaders.addHeader("Content-Disposition","attachment");// filename=MMtext0.txt


String anImageB64 =toBASE64(contentPath,1);

someImageHeaders.addHeader("Content-Length",""+anImageB64.length());// filename=MMtext0.txt


MimeBodyPart anImagePart = new MimeBodyPart(someImageHeaders, anImageB64.getBytes("UTF-8"));

someImageHeaders.addHeader("Content-Id",anImagePart.getContentID());

aMultiPart.addBodyPart(anImagePart);

AttachmentPart anAttachment = message.createAttachmentPart(aMultiPart, aMultiPart.getContentType());
message.addAttachmentPart(anAttachment);
anAttachment.setContentId("");

SOAPElement source = sbe.addChildElement("Content");
//source.addAttribute(envelope.createName("allowAdaptations"), "true");
source.addAttribute(envelope.createName("href"), "cid:" + anImagePart.getContentID());

// SOAPBodyElement er = body.addBodyElement(envelope.createName("EricssonSubmitReq", "ericMm7", "REL-5-MM7-1-1-ericsson.xsd"));
// er.addChildElement("SenderVisibility", "ericMm7").addTextNode("true");

message.saveChanges();
System.out.println("\nREQUEST:\n");
message.writeTo(System.out);
//Comment for request


// Send the message
SOAPMessage reply = connection.call(message, mmscurl);

// ----------------------------------------------------------------------------------------
// get the resonse

System.out.println("\nRESPONSE:\n");
// Create the transformer
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// Extract the content of the reply
Source sourceContent = reply.getSOAPPart().getContent();
// Set the output for the transformation
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
System.out.println();
connection.close();

} catch (Exception e) {
e.printStackTrace();
}
}

// ----------------------------------------------------------
public String toBASE64(String filePath, int flag) throws Exception
{
if(flag==0)
{
byte byteArray[]=filePath.getBytes();
Base64 encoder=new Base64();
return encoder.encodeToString(byteArray);

}
else
{
File file2 = new File(filePath);
FileInputStream fin2 = new FileInputStream(file2);
byte byteArray[] = new byte[fin2.available()];
int i = -1, k = 0;
while ((i = fin2.read()) != -1)
{
byteArray[k++] = (byte) i;
}
Base64 encoder=new Base64();
return encoder.encodeBase64String(byteArray);

}

//BASE64Encoder encoder = new BASE64Encoder();
//return encoder.encode(byteArray);

}

//--------------------------------------------------------

public int PrintAndLog(String Buff)
{
try
{
Calendar today = Calendar.getInstance();
String ALERTS = "MMS";
String strlogfile = ""+formatN(""+today.get(Calendar.YEAR),4) + formatN(""+(today.get(Calendar.MONTH)+1),2) + formatN(""+today.get(Calendar.DATE),2);
String strdate = formatN(""+today.get(Calendar.YEAR),4) + formatN(""+(today.get(Calendar.MONTH)+1),2) + formatN(""+today.get(Calendar.DATE),2);
String strtime = formatN(""+today.get(Calendar.HOUR_OF_DAY),2)+formatN(""+today.get(Calendar.MINUTE),2)+formatN(""+today.get(Calendar.SECOND),2);
Buff = "["+ALERTS+" "+strdate+" "+strtime +"]--> "+Buff;
System.out.println(Buff);
FileOutputStream outfile = new FileOutputStream("./log/" +ALERTS+"_"+ strlogfile + ".log",true);
PrintStream outprint = new PrintStream(outfile);
outprint.println(Buff);
outprint.close();
outfile.close();
return 1;
}
catch(Exception e)
{
System.out.println(e.toString());
return 0;
}
}
//--------------------------------------------------------
//--------------------------------------------------------

public String formatN(String str, int x)
{
int len;
//System.out.println(str);
String ret_str="";
len = str.length();
if (len >= x)
ret_str = str;
else
{
for(int i=0; i ret_str = ret_str + "0";
ret_str = ret_str + str;
}
//System.out.println(ret_str);
return ret_str;
}

//--------------------------------------------------------


public static void main(String arg[])
{


new MMS_Client2().mmsSender(sender, msisdn, mmscurl, vasid, vaspId, contentPath, subject,password);
}
}

/*