Skip to content

Commit 5112301

Browse files
New theme december
1 parent e262a3b commit 5112301

File tree

53 files changed

+879
-439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+879
-439
lines changed

.DS_Store

0 Bytes
Binary file not shown.

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.shopizer</groupId>
88
<artifactId>shopizer</artifactId>
9-
<version>2.8.0</version>
9+
<version>2.9.0</version>
1010
<packaging>pom</packaging>
1111

1212
<name>shopizer</name>
@@ -23,10 +23,10 @@
2323
<java.version>1.8</java.version>
2424
<maven.compiler.source>1.8</maven.compiler.source>
2525
<maven.compiler.target>1.8</maven.compiler.target>
26-
<shopizer.version>2.8.0</shopizer.version>
26+
<shopizer.version>2.9.0</shopizer.version>
2727
<shopizer.search.version>2.8.0</shopizer.search.version>
2828
<shopizer-canadapost.version>2.8.0</shopizer-canadapost.version>
29-
<shopizer-shipping-distance.version>2.8.0</shopizer-shipping-distance.version>
29+
<!--<shopizer-shipping-distance.version>2.8.2</shopizer-shipping-distance.version>-->
3030
<org.elasticsearch-version>6.3.1</org.elasticsearch-version>
3131
<io.searchbox.jest-version>6.3.1</io.searchbox.jest-version>
3232
<!-- requires spring 5 -->

sm-core-model/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<parent>
1717
<groupId>com.shopizer</groupId>
1818
<artifactId>shopizer</artifactId>
19-
<version>2.8.0</version>
19+
<version>2.9.0</version>
2020
</parent>
2121

2222

sm-core-modules/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.shopizer</groupId>
99
<artifactId>shopizer</artifactId>
10-
<version>2.8.0</version>
10+
<version>2.9.0</version>
1111
</parent>
1212

1313

0 Bytes
Binary file not shown.

sm-core/pom.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.shopizer</groupId>
99
<artifactId>shopizer</artifactId>
10-
<version>2.8.0</version>
10+
<version>2.9.0</version>
1111
</parent>
1212

1313
<artifactId>sm-core</artifactId>
@@ -24,6 +24,7 @@
2424
<drools.version>7.20.0.Final</drools.version>
2525
<coverage.lines>.00</coverage.lines>
2626
<coverage.branches>.00</coverage.branches>
27+
<google-client-maps-services-version>0.1.6</google-client-maps-services-version>
2728
</properties>
2829

2930
<dependencies>
@@ -45,21 +46,20 @@
4546

4647

4748

48-
49-
<!-- shipping rules -->
50-
<!-- shipping distance pre-processor -->
51-
<dependency>
52-
<groupId>com.shopizer</groupId>
53-
<artifactId>shopizer-shipping-distance-processor</artifactId>
54-
<version>${shopizer-shipping-distance.version}</version>
55-
</dependency>
56-
5749
<!-- canadapost -->
5850
<dependency>
5951
<groupId>com.shopizer</groupId>
6052
<artifactId>shopizer-shipping-canadapost-module</artifactId>
6153
<version>${shopizer-canadapost.version}</version>
6254
</dependency>
55+
56+
57+
<!-- Google Map API -->
58+
<dependency>
59+
<groupId>com.google.maps</groupId>
60+
<artifactId>google-maps-services</artifactId>
61+
<version>${google-client-maps-services-version}</version>
62+
</dependency>
6363

6464

6565
<dependency>
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package com.salesmanager.core.business.configuration;
2+
3+
import java.io.IOException;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
import org.drools.decisiontable.DecisionTableProviderImpl;
8+
import org.kie.api.KieServices;
9+
import org.kie.api.builder.KieBuilder;
10+
import org.kie.api.builder.KieFileSystem;
11+
import org.kie.api.builder.KieModule;
12+
import org.kie.api.builder.KieRepository;
13+
import org.kie.api.builder.ReleaseId;
14+
import org.kie.api.io.Resource;
15+
import org.kie.api.runtime.KieContainer;
16+
import org.kie.api.runtime.KieSession;
17+
import org.kie.internal.builder.DecisionTableConfiguration;
18+
import org.kie.internal.builder.DecisionTableInputType;
19+
import org.kie.internal.builder.KnowledgeBuilderFactory;
20+
import org.kie.internal.io.ResourceFactory;
21+
22+
public class DroolsBeanFactory {
23+
24+
25+
private static final String RULES_PATH = "com/salesmanager/drools/rules/";
26+
private KieServices kieServices=KieServices.Factory.get();
27+
28+
private KieFileSystem getKieFileSystem() throws IOException{
29+
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
30+
List<String> rules=Arrays.asList("PriceByDistance.drl","ShippingDecision.xls");
31+
for(String rule:rules){
32+
kieFileSystem.write(ResourceFactory.newClassPathResource(rule));
33+
}
34+
return kieFileSystem;
35+
36+
}
37+
38+
public KieContainer getKieContainer() throws IOException {
39+
getKieRepository();
40+
41+
KieBuilder kb = kieServices.newKieBuilder(getKieFileSystem());
42+
kb.buildAll();
43+
44+
KieModule kieModule = kb.getKieModule();
45+
KieContainer kContainer = kieServices.newKieContainer(kieModule.getReleaseId());
46+
47+
return kContainer;
48+
49+
}
50+
51+
private void getKieRepository() {
52+
final KieRepository kieRepository = kieServices.getRepository();
53+
kieRepository.addKieModule(new KieModule() {
54+
public ReleaseId getReleaseId() {
55+
return kieRepository.getDefaultReleaseId();
56+
}
57+
});
58+
}
59+
60+
public KieSession getKieSession(){
61+
getKieRepository();
62+
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
63+
64+
kieFileSystem.write(ResourceFactory.newClassPathResource("com/salesmanager/drools/rules/PriceByDistance.drl"));
65+
kieFileSystem.write(ResourceFactory.newClassPathResource("com/salesmanager/drools/rules/ShippingDecision.drl"));
66+
67+
KieBuilder kb = kieServices.newKieBuilder(kieFileSystem);
68+
kb.buildAll();
69+
KieModule kieModule = kb.getKieModule();
70+
71+
KieContainer kContainer = kieServices.newKieContainer(kieModule.getReleaseId());
72+
73+
return kContainer.newKieSession();
74+
75+
}
76+
77+
public KieSession getKieSession(Resource dt) {
78+
KieFileSystem kieFileSystem = kieServices.newKieFileSystem()
79+
.write(dt);
80+
81+
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem)
82+
.buildAll();
83+
84+
KieRepository kieRepository = kieServices.getRepository();
85+
86+
ReleaseId krDefaultReleaseId = kieRepository.getDefaultReleaseId();
87+
88+
KieContainer kieContainer = kieServices.newKieContainer(krDefaultReleaseId);
89+
90+
KieSession ksession = kieContainer.newKieSession();
91+
92+
return ksession;
93+
}
94+
95+
/*
96+
* Can be used for debugging
97+
* Input excelFile example: com/baeldung/drools/rules/Discount.xls
98+
*/
99+
public String getDrlFromExcel(String excelFile) {
100+
DecisionTableConfiguration configuration = KnowledgeBuilderFactory.newDecisionTableConfiguration();
101+
configuration.setInputType(DecisionTableInputType.XLS);
102+
103+
Resource dt = ResourceFactory.newClassPathResource(excelFile, getClass());
104+
105+
DecisionTableProviderImpl decisionTableProvider = new DecisionTableProviderImpl();
106+
107+
String drl = decisionTableProvider.loadFromResource(dt, null);
108+
109+
return drl;
110+
}
111+
112+
}
Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
11
package com.salesmanager.core.business.configuration;
22

3-
import org.kie.api.KieServices;
4-
import org.kie.api.builder.KieBuilder;
5-
import org.kie.api.builder.KieFileSystem;
6-
import org.kie.api.builder.KieModule;
7-
import org.kie.api.runtime.KieContainer;
8-
import org.kie.internal.io.ResourceFactory;
9-
import org.springframework.context.annotation.Bean;
10-
import org.springframework.context.annotation.Configuration;
11-
12-
@Configuration
3+
//@Configuration
134
public class DroolsConfiguration {
14-
5+
/*
156
private final static String SHIPPING_CUSTOM = "rules/shipping-custom-rules.xls";
167
private final static String SHIPPING_DECISION = "rules/shipping-decision-rules.xls";
178
private final static String MANUFACTURER_BASED_PRICING =
189
"rules/manufacturer-shipping-ordertotal-rules.xls";
19-
10+
11+
private static final String RULES_PATH = "com/salesmanager/drools/rules/";
12+
private KieServices kieServices=KieServices.Factory.get();
13+
*/
2014

2115
/**
2216
* Drools containers defined here TODO used a builder utility instead of repetition
@@ -27,7 +21,7 @@ public class DroolsConfiguration {
2721
*
2822
* @return
2923
*/
30-
@Bean
24+
/* @Bean
3125
public KieContainer kieShippingCustomContainer() {
3226
KieServices kieServices = KieServices.Factory.get();
3327
@@ -38,9 +32,9 @@ public KieContainer kieShippingCustomContainer() {
3832
KieModule kieModule = kieBuilder.getKieModule();
3933
4034
return kieServices.newKieContainer(kieModule.getReleaseId());
41-
}
35+
}*/
4236

43-
@Bean
37+
/* @Bean
4438
public KieContainer kieShippingDecisionContainer() {
4539
KieServices kieServices = KieServices.Factory.get();
4640
@@ -51,9 +45,9 @@ public KieContainer kieShippingDecisionContainer() {
5145
KieModule kieModule = kieBuilder.getKieModule();
5246
5347
return kieServices.newKieContainer(kieModule.getReleaseId());
54-
}
48+
}*/
5549

56-
@Bean
50+
/* @Bean
5751
public KieContainer kieManufacturerBasedPricingContainer() {
5852
KieServices kieServices = KieServices.Factory.get();
5953
@@ -64,6 +58,17 @@ public KieContainer kieManufacturerBasedPricingContainer() {
6458
KieModule kieModule = kieBuilder.getKieModule();
6559
6660
return kieServices.newKieContainer(kieModule.getReleaseId());
67-
}
61+
}*/
62+
63+
/* public KieFileSystem kieFileSystem() throws IOException {
64+
KieFileSystem kieFileSystem = getKieServices().newKieFileSystem();
65+
for (Resource file : getRuleFiles()) {
66+
kieFileSystem.write(
67+
ResourceFactory.newClassPathResource(
68+
RULES_PATH + file.getFilename(), "UTF-8"));
69+
}
70+
return kieFileSystem;
71+
}*/
72+
6873

6974
}

sm-core/src/main/java/com/salesmanager/core/business/modules/integration/shipping/impl/CustomShippingQuoteRules.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010
import org.apache.commons.lang3.Validate;
1111
import org.kie.api.runtime.KieContainer;
1212
import org.kie.api.runtime.KieSession;
13+
import org.kie.internal.io.ResourceFactory;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
16+
17+
import com.salesmanager.core.business.configuration.DroolsBeanFactory;
1518
import com.salesmanager.core.model.common.Delivery;
1619
import com.salesmanager.core.model.merchant.MerchantStore;
1720
import com.salesmanager.core.model.shipping.PackageDetails;
@@ -38,8 +41,8 @@ public class CustomShippingQuoteRules implements ShippingQuoteModule {
3841

3942
//private KnowledgeBase kbase;
4043

41-
@Inject
42-
KieContainer kieShippingCustomContainer;
44+
//@Inject
45+
//KieContainer kieShippingCustomContainer;
4346

4447
@Override
4548
public void validateModuleConfiguration(
@@ -142,18 +145,22 @@ public List<ShippingOption> getShippingQuotes(ShippingQuote quote,
142145

143146
LOGGER.debug("Setting input parameters " + inputParameters.toString());
144147

145-
KieSession kieSession = kieShippingCustomContainer.newKieSession();
148+
149+
KieSession kieSession=new DroolsBeanFactory().getKieSession(ResourceFactory.newClassPathResource("com/salesmanager/drools/rules/PriceByDistance.drl"));
150+
151+
DecisionResponse resp = new DecisionResponse();
152+
146153
kieSession.insert(inputParameters);
154+
kieSession.setGlobal("decision",resp);
147155
kieSession.fireAllRules();
148-
149-
//shippingPriceRule.execute(Arrays.asList(new Object[] { inputParameters }));
156+
//System.out.println(resp.getCustomPrice());
150157

151-
if(inputParameters.getPriceQuote() != null) {
158+
if(resp.getCustomPrice() != null) {
152159

153160
ShippingOption shippingOption = new ShippingOption();
154161

155162

156-
shippingOption.setOptionPrice(new BigDecimal(inputParameters.getPriceQuote()));
163+
shippingOption.setOptionPrice(new BigDecimal(resp.getCustomPrice()));
157164
shippingOption.setShippingModuleCode(MODULE_CODE);
158165
shippingOption.setOptionCode(MODULE_CODE);
159166
shippingOption.setOptionId(MODULE_CODE);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.salesmanager.core.business.modules.integration.shipping.impl;
2+
3+
public class DecisionResponse {
4+
5+
private String moduleName;
6+
private String customPrice;
7+
8+
public String getModuleName() {
9+
return moduleName;
10+
}
11+
12+
public void setModuleName(String moduleName) {
13+
this.moduleName = moduleName;
14+
}
15+
16+
public String getCustomPrice() {
17+
return customPrice;
18+
}
19+
20+
public void setCustomPrice(String customPrice) {
21+
this.customPrice = customPrice;
22+
}
23+
24+
}

0 commit comments

Comments
 (0)