Skip to content

Commit b5dc1e3

Browse files
committedApr 27, 2017
Client and server scratches are ready
1 parent 9af54ed commit b5dc1e3

File tree

12 files changed

+319
-45
lines changed

12 files changed

+319
-45
lines changed
 

‎.gitignore

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
# Created by .ignore support plugin (hsz.mobi)
2-
### Example user template template
3-
### Example user template
4-
5-
# IntelliJ project files
61
.idea
72
*.iml
3+
target
84
out
95
gen
Binary file not shown.

‎raspberry-pi-client/pom.xml

+48-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<parent>
44
<artifactId>stack4things</artifactId>
@@ -12,18 +12,6 @@
1212

1313
<name>raspberry-pi-client</name>
1414
<url>http://maven.apache.org</url>
15-
<build>
16-
<plugins>
17-
<plugin>
18-
<groupId>org.apache.maven.plugins</groupId>
19-
<artifactId>maven-compiler-plugin</artifactId>
20-
<configuration>
21-
<source>1.7</source>
22-
<target>1.7</target>
23-
</configuration>
24-
</plugin>
25-
</plugins>
26-
</build>
2715

2816
<properties>
2917
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -38,6 +26,12 @@
3826
<scope>test</scope>
3927
</dependency>
4028

29+
<dependency>
30+
<groupId>com.github.usmanovbf</groupId>
31+
<artifactId>server-api</artifactId>
32+
<version>1.0-SNAPSHOT</version>
33+
</dependency>
34+
4135
<dependency>
4236
<groupId>org.jboss.resteasy</groupId>
4337
<artifactId>resteasy-jaxrs</artifactId>
@@ -75,4 +69,45 @@
7569
<version>1.1</version>
7670
</dependency>
7771
</dependencies>
72+
73+
<build>
74+
<finalName>raspberry-pi-client</finalName>
75+
<plugins>
76+
<plugin>
77+
<artifactId>maven-compiler-plugin</artifactId>
78+
<configuration>
79+
<source>1.8</source>
80+
<target>1.8</target>
81+
</configuration>
82+
</plugin>
83+
<plugin>
84+
<artifactId>maven-assembly-plugin</artifactId>
85+
<configuration>
86+
<outputDirectory>
87+
app
88+
</outputDirectory>
89+
<archive>
90+
<manifest>
91+
<mainClass>com.github.usmanovbf.raspberry.pi.client.Starter</mainClass>
92+
</manifest>
93+
</archive>
94+
<descriptorRefs>
95+
<descriptorRef>jar-with-dependencies</descriptorRef>
96+
</descriptorRefs>
97+
</configuration>
98+
<executions>
99+
<execution>
100+
<id>make-assembly</id>
101+
<phase>package</phase>
102+
<goals>
103+
<goal>single</goal>
104+
</goals>
105+
</execution>
106+
</executions>
107+
</plugin>
108+
109+
</plugins>
110+
111+
</build>
112+
78113
</project>

‎raspberry-pi-client/src/main/java/com/github/usmanovbf/raspberry/pi/client/AppProperties.java

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.github.usmanovbf.raspberry.pi.client;
22

3+
import java.util.UUID;
4+
35
public class AppProperties {
46
// private static Properties properties;
57
// private static Logger logger = LoggerFactory.getLogger( Collector.class );
@@ -13,4 +15,6 @@ public class AppProperties {
1315
// }
1416
// }
1517

18+
public static UUID deviceUuid = UUID.fromString( "550e8400-e29b-41d4-a716-446655440000" );
19+
1620
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.github.usmanovbf.raspberry.pi.client;
2+
3+
import com.github.usmanovbf.raspberry.pi.client.sender.RestSender;
4+
5+
import java.util.Timer;
6+
import java.util.TimerTask;
7+
8+
public class Starter {
9+
public static void main( String[] args ) {
10+
int delay = 5000; // delay for 5 sec.
11+
int interval = 1000; // iterate every sec.
12+
Timer timer = new Timer();
13+
14+
timer.scheduleAtFixedRate( new TimerTask() {
15+
public void run() {
16+
new RestSender().send();
17+
}
18+
}, delay, interval );
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,57 @@
11
package com.github.usmanovbf.raspberry.pi.client.sender;
22

33

4+
import com.github.usmanovbf.raspberry.pi.client.AppProperties;
5+
import com.github.usmanovbf.raspberry.pi.client.collector.Collector;
6+
import com.github.usmanovbf.server.api.EventDto;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
410
import javax.ws.rs.client.Client;
511
import javax.ws.rs.client.ClientBuilder;
12+
import javax.ws.rs.client.Entity;
613
import javax.ws.rs.client.WebTarget;
14+
import javax.ws.rs.core.MediaType;
715
import javax.ws.rs.core.Response;
16+
import java.util.Calendar;
17+
import java.util.Date;
818

919
public class RestSender {
10-
public void sender() {
20+
private Logger logger = LoggerFactory.getLogger( RestSender.class );
21+
22+
public void send() {
23+
logger.info( "RestSender.send started" );
24+
1125
Client client = ClientBuilder.newClient();
26+
logger.info( "RestSender.send.client created" );
27+
1228
WebTarget target = client.target( "http://foo.com/resource" );
13-
Response response = target.request().get();
14-
String value = response.readEntity( String.class );
15-
response.close(); // You should close connections!
29+
logger.info( "RestSender.send.target created" );
30+
31+
EventDto eventDto = collectEvent();
32+
logger.info( "RestSender.send.eventDto created: " + eventDto.toString() );
33+
34+
Response response = target.request().post( Entity.entity( eventDto, MediaType.APPLICATION_JSON_TYPE ) );
35+
logger.info( "RestSender.send.response created" );
36+
37+
response.close();
38+
logger.info( "RestSender.send.response closed" );
39+
40+
}
41+
42+
private EventDto collectEvent() {
43+
EventDto eventDto = new EventDto();
44+
Collector collector = new Collector();
45+
float temperature = collector.getTemperature();
46+
47+
eventDto.setDeviceUuid( AppProperties.deviceUuid );
48+
eventDto.setTemperature( temperature );
1649

50+
Date createdDate = Calendar.getInstance().getTime();
51+
// SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
52+
// String createdDate = dateFormat.( calendarDate );
53+
eventDto.setCreatedDate( createdDate );
54+
return eventDto;
1755
}
1856

1957
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
deviceUuid=550e8400-e29b-41d4-a716-446655440000

‎server/app/server.war

36.5 MB
Binary file not shown.

‎server/pom.xml

+135-22
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<parent>
44
<artifactId>stack4things</artifactId>
@@ -16,6 +16,9 @@
1616
<properties>
1717
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1818
<resteasy.version>3.1.0.Final</resteasy.version>
19+
<drools.version>6.5.0.Final</drools.version>
20+
<jackson-annotations.version>2.8.3</jackson-annotations.version>
21+
<hibernate.version>5.0.11.Final</hibernate.version>
1922
</properties>
2023

2124
<dependencies>
@@ -36,11 +39,108 @@
3639
<artifactId>resteasy-multipart-provider</artifactId>
3740
<version>${resteasy.version}</version>
3841
</dependency>
42+
3943
<dependency>
4044
<groupId>org.jboss.resteasy</groupId>
4145
<artifactId>resteasy-jackson-provider</artifactId>
4246
<version>${resteasy.version}</version>
4347
</dependency>
48+
49+
<dependency>
50+
<groupId>com.github.usmanovbf</groupId>
51+
<artifactId>server-api</artifactId>
52+
<version>1.0-SNAPSHOT</version>
53+
</dependency>
54+
55+
<dependency>
56+
<groupId>org.slf4j</groupId>
57+
<artifactId>slf4j-api</artifactId>
58+
<version>1.7.23</version>
59+
</dependency>
60+
61+
<dependency>
62+
<groupId>org.slf4j</groupId>
63+
<artifactId>slf4j-simple</artifactId>
64+
<version>1.7.23</version>
65+
</dependency>
66+
67+
<dependency>
68+
<groupId>org.kie</groupId>
69+
<artifactId>kie-api</artifactId>
70+
<version>${drools.version}</version>
71+
</dependency>
72+
73+
<dependency>
74+
<groupId>org.drools</groupId>
75+
<artifactId>drools-core</artifactId>
76+
<version>${drools.version}</version>
77+
</dependency>
78+
79+
<dependency>
80+
<groupId>org.drools</groupId>
81+
<artifactId>drools-compiler</artifactId>
82+
<version>${drools.version}</version>
83+
</dependency>
84+
<!--Логирование для KIE-->
85+
<dependency>
86+
<groupId>org.slf4j</groupId>
87+
<artifactId>slf4j-simple</artifactId>
88+
<version>1.6.2</version>
89+
</dependency>
90+
91+
<dependency>
92+
<groupId>uk.co.jemos.podam</groupId>
93+
<artifactId>podam</artifactId>
94+
<version>6.0.3.RELEASE</version>
95+
</dependency>
96+
97+
<dependency>
98+
<groupId>commons-io</groupId>
99+
<artifactId>commons-io</artifactId>
100+
<version>2.5</version>
101+
</dependency>
102+
103+
<dependency>
104+
<groupId>org.hibernate</groupId>
105+
<artifactId>hibernate-core</artifactId>
106+
<version>${hibernate.version}</version>
107+
</dependency>
108+
109+
<dependency>
110+
<groupId>org.hibernate</groupId>
111+
<artifactId>hibernate-entitymanager</artifactId>
112+
<version>${hibernate.version}</version>
113+
</dependency>
114+
115+
<dependency>
116+
<groupId>org.postgresql</groupId>
117+
<artifactId>postgresql</artifactId>
118+
<version>9.4.1211.jre7</version>
119+
</dependency>
120+
121+
<dependency>
122+
<groupId>log4j</groupId>
123+
<artifactId>log4j</artifactId>
124+
<version>1.2.17</version>
125+
</dependency>
126+
127+
<dependency>
128+
<groupId>com.fasterxml.jackson.core</groupId>
129+
<artifactId>jackson-annotations</artifactId>
130+
<version>${jackson-annotations.version}</version>
131+
</dependency>
132+
133+
<dependency>
134+
<groupId>com.googlecode.json-simple</groupId>
135+
<artifactId>json-simple</artifactId>
136+
<version>1.1</version>
137+
</dependency>
138+
139+
<dependency>
140+
<groupId>com.fasterxml.jackson.core</groupId>
141+
<artifactId>jackson-databind</artifactId>
142+
<version>2.8.3</version>
143+
</dependency>
44144
</dependencies>
45145

46146
<build>
@@ -49,29 +149,42 @@
49149
<plugin>
50150
<artifactId>maven-compiler-plugin</artifactId>
51151
<configuration>
52-
<source>1.6</source>
53-
<target>1.6</target>
152+
<source>1.8</source>
153+
<target>1.8</target>
154+
</configuration>
155+
</plugin>
156+
<plugin>
157+
<artifactId>maven-war-plugin</artifactId>
158+
<configuration>
159+
<outputDirectory>
160+
app
161+
</outputDirectory>
54162
</configuration>
163+
<executions>
164+
<execution>
165+
<phase>package</phase>
166+
</execution>
167+
</executions>
55168
</plugin>
56-
<!--<plugin>-->
57-
<!--<artifactId>maven-assembly-plugin</artifactId>-->
58-
<!--<version>3.0.0</version>-->
59-
60-
<!--<configuration>-->
61-
<!--<descriptorRefs>-->
62-
<!--<descriptorRef>jar-with-dependencies</descriptorRef>-->
63-
<!--</descriptorRefs>-->
64-
<!--</configuration>-->
65-
<!--<executions>-->
66-
<!--<execution>-->
67-
<!--<id>make-assembly</id> &lt;!&ndash; this is used for inheritance merges &ndash;&gt;-->
68-
<!--<phase>package</phase> &lt;!&ndash; bind to the packaging phase &ndash;&gt;-->
69-
<!--<goals>-->
70-
<!--<goal>single</goal>-->
71-
<!--</goals>-->
72-
<!--</execution>-->
73-
<!--</executions>-->
74-
<!--</plugin>-->
169+
170+
75171
</plugins>
76172
</build>
173+
174+
<repositories>
175+
<repository>
176+
<id>jboss-public-repository-group</id>
177+
<name>JBoss Public Repository Group</name>
178+
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
179+
<releases>
180+
<enabled>true</enabled>
181+
<updatePolicy>never</updatePolicy>
182+
</releases>
183+
<snapshots>
184+
<enabled>false</enabled>
185+
<updatePolicy>daily</updatePolicy>
186+
</snapshots>
187+
</repository>
188+
</repositories>
189+
77190
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.github.usmanovbf.server.cep;
2+
3+
import com.github.usmanovbf.server.api.EventDto;
4+
import org.kie.api.io.ResourceType;
5+
import org.kie.internal.KnowledgeBase;
6+
import org.kie.internal.builder.KnowledgeBuilder;
7+
import org.kie.internal.builder.KnowledgeBuilderConfiguration;
8+
import org.kie.internal.builder.KnowledgeBuilderFactory;
9+
import org.kie.internal.io.ResourceFactory;
10+
import org.kie.internal.runtime.StatefulKnowledgeSession;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
public class CepEngine {
15+
private Logger logger = LoggerFactory.getLogger( CepEngine.class );
16+
17+
private StatefulKnowledgeSession session;
18+
19+
public void doWork( EventDto eventDto ) {
20+
initKieEnvironment();
21+
logger.info( "KieEnvironment initialed" );
22+
23+
session.insert( eventDto );
24+
logger.info( "Even inserted in kie:" + eventDto.toString() );
25+
26+
session.fireAllRules();
27+
logger.info( "AllRules are fired" );
28+
}
29+
30+
private void initKieEnvironment() {
31+
KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
32+
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( conf );
33+
logger.info( "KnowledgeBuilder created" );
34+
35+
knowledgeBuilder.add( ResourceFactory.newClassPathResource( "rules/temperature.drl" ), ResourceType.DRL );
36+
logger.info( ".drl file uploaded" );
37+
38+
KnowledgeBase knowledgeBase = knowledgeBuilder.newKnowledgeBase();
39+
logger.info( "knowledgeBase created" );
40+
41+
session = knowledgeBase.newStatefulKnowledgeSession();
42+
logger.info( "session created" );
43+
}
44+
45+
}

‎server/src/main/java/com/github/usmanovbf/server/reciever/Reciever.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.github.usmanovbf.server.reciever;
22

33
import com.github.usmanovbf.server.api.EventDto;
4+
import com.github.usmanovbf.server.cep.CepEngine;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
47

58
import javax.ws.rs.Consumes;
69
import javax.ws.rs.POST;
@@ -9,10 +12,17 @@
912

1013
@Path("/reciever")
1114
public class Reciever {
15+
private Logger logger = LoggerFactory.getLogger( Reciever.class );
16+
1217
@POST
1318
@Path("/event")
1419
@Consumes("application/json")
15-
public Response printMessage( EventDto eventDto ) {
20+
public Response receiveEventDto( EventDto eventDto ) {
21+
logger.info( "EventDto is received in Reciever.receiveEventDto" );
22+
23+
CepEngine cepEngine = new CepEngine();
24+
cepEngine.doWork( eventDto );
25+
1626
return Response.status( 200 ).entity( eventDto.toString() ).build();
1727

1828
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//package com.github.usmanovbf.server.rules;
2+
3+
import com.github.usmanovbf.server.api.EventDto;
4+
rule "temperature"
5+
dialect "java"
6+
7+
when
8+
event : EventDto( temperature >= 20 )
9+
then
10+
System.out.println("The temperature "+ event.getTemperature()+" is higher than critical (20'C)!");
11+
end
12+

0 commit comments

Comments
 (0)
Please sign in to comment.