/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.compiler.integrationtests;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
import org.kie.api.KieBase;
import org.kie.api.KieServices;
import org.kie.api.builder.KieBuilder;
import org.kie.api.builder.KieFileSystem;
import org.kie.api.builder.Message;
import org.kie.api.builder.Message.Level;
import org.kie.api.runtime.KieSession;
public class CalendarTest {
@Test
public void test() {
// BZ-1007385
String drl = "package org.drools.compiler.integrationtests;\n" +
"\n" +
"global java.util.List list\n" +
" \n" +
"rule \"weekend\"\n" +
" calendars \"weekend\"\n" +
" \n" +
" when\n" +
" then\n" +
" list.add(\"weekend\");\n" +
"end\n" +
" \n" +
"rule \"weekday\"\n" +
" calendars \"weekday\"\n" +
"\n" +
" when\n" +
" then\n" +
" list.add(\"weekday\");\n" +
"end";
KieServices ks = KieServices.Factory.get();
KieFileSystem kfs = ks.newKieFileSystem();
kfs.write("src/main/resources/kbase1/calendars.drl", drl);
KieBuilder kbuilder = ks.newKieBuilder(kfs);
kbuilder.buildAll();
List<Message> res = kbuilder.getResults().getMessages(Level.ERROR);
assertEquals(res.toString(), 0, res.size());
KieBase kbase = ks.newKieContainer(kbuilder.getKieModule().getReleaseId()).getKieBase();
KieSession ksession = ks.newKieContainer(kbuilder.getKieModule().getReleaseId()).newKieSession();
ArrayList<String> list = new ArrayList<String>();
ksession.getCalendars().set("weekend", WEEKEND);
ksession.getCalendars().set("weekday", WEEKDAY);
ksession.setGlobal("list", list);
ksession.fireAllRules();
ksession.dispose();
assertEquals(1, list.size());
}
private static final org.kie.api.time.Calendar WEEKEND = new org.kie.api.time.Calendar() {
@Override
public boolean isTimeIncluded(long timestamp) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timestamp);
int day = c.get(Calendar.DAY_OF_WEEK);
return day == Calendar.SATURDAY || day == Calendar.SUNDAY;
}
};
private static final org.kie.api.time.Calendar WEEKDAY = new org.kie.api.time.Calendar() {
@Override
public boolean isTimeIncluded(long timestamp) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timestamp);
int day = c.get(Calendar.DAY_OF_WEEK);
return day != Calendar.SATURDAY && day != Calendar.SUNDAY;
}
};
}