Skip to content

Commit 71b4183

Browse files
committed
XX-10698 - fix bugs after initial testing
1 parent a90bd33 commit 71b4183

16 files changed

+149
-34
lines changed

config-plugin/Makefile.am

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ SUBDIRS = \
77
test
88

99
EXTRA_DIST = \
10-
$(callqueue_SRC) \
1110
plugin \
12-
src/sipxplugin.beans.xml
11+
src
1312

1413
jardir = @SIPX_JAVADIR@/sipXconfig/plugins
1514
JAR_FILE = sipxcallqueue-config.jar
1615
jar_DATA = $(JAR_FILE)
1716

1817
callqueue_SRC = $(shell cd $(srcdir); find src -type f -name '*.java')
18+
callqueue_RESOURCES = $(shell cd $(srcdir)/src; find -type f -not -name '*.java')
1919

2020
plugin_RESOURCES = \
2121
$(shell cd $(srcdir); find plugin -type f)
@@ -28,11 +28,11 @@ callqueue_PKGS = \
2828
callqueue_DEPS = \
2929
$(call JavaDep,@SIPX_JAVADIR@/sipXcommons @SIPX_JAVADIR@/sipXconfig,$(callqueue_PKGS))
3030

31-
$(JAR_FILE) : javac-callqueue $(callqueue_RESOURCES)
31+
$(JAR_FILE) : javac-callqueue $(addprefix src/,$(callqueue_RESOURCES))
3232
jar cf $@ \
3333
$(call JarInclude,$(JAVAROOT),.) \
3434
$(call JarInclude,$(srcdir),$(plugin_RESOURCES)) \
35-
$(call JarInclude,$(srcdir)/src,sipxplugin.beans.xml)
35+
$(call JarInclude,$(srcdir)/src,$(callqueue_RESOURCES))
3636

3737
# style checks java source code coding style agains proper sipxecs conforming. Not nec.
3838
# but you will probably find very useful

config-plugin/plugin/CallQueueEditSettingsPanel.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<span jwcid="$content$">
2-
<span jwcid="@common/ErrorMsg"/>
2+
<span jwcid="@common/ErrorMsg" validator="bean:validator"/>
33
<span jwcid="@common/QuickHelp" value="message:quick.help" />
44
<form
55
jwcid="form@Form"
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<span jwcid="CallQueueHookFeatureBottom@Block">
1+
<span jwcid="CallQueueHookFeaturesBottom@Block">
22
<li><a jwcid="@PageLink" page="plugin/CallQueuePage"><span key="menu.callqueuehook.bottomFeatureMenu"/></a></li>
33
</span>
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
menu.callqueuehook.bottomSystemMenu=Call Queue
1+
menu.callqueuehook.bottomFeatureMenu=Call Queue

config-plugin/plugin/CallQueuePage.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
</span>
99
</div>
1010
<div id="settings-content">
11-
<div jwcid="@If" condition="ognl:tab == 'queues'"><div jwcid="@callqueue/CallQueueQueuesPanel"/></div>
12-
<div jwcid="@If" condition="ognl:tab == 'agents'"><div jwcid="@callqueue/CallQueueAgentsPanel"/></div>
13-
<div jwcid="@If" condition="ognl:tab == 'settings'"><div jwcid="@callqueue/CallQueueEditSettingsPanel"/></div>
11+
<div jwcid="@If" condition="ognl:tab == 'queues'"><div jwcid="@plugin/CallQueueQueuesPanel"/></div>
12+
<div jwcid="@If" condition="ognl:tab == 'agents'"><div jwcid="@plugin/CallQueueAgentsPanel"/></div>
13+
<div jwcid="@If" condition="ognl:tab == 'settings'"><div jwcid="@plugin/CallQueueEditSettingsPanel"/></div>
1414
</div>
1515
</div>

config-plugin/src/org/sipfoundry/sipxconfig/callqueue/CallCenterConfiguration.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@
1313
import java.io.Writer;
1414
import java.util.ArrayList;
1515
import java.util.Collection;
16+
import java.util.Collections;
17+
import java.util.List;
1618

1719
import org.apache.velocity.VelocityContext;
1820
import org.sipfoundry.sipxconfig.commserver.Location;
21+
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchFeature;
1922
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchSettings;
2023
import org.sipfoundry.sipxconfig.freeswitch.config.AbstractFreeswitchConfiguration;
2124
import org.springframework.beans.factory.annotation.Required;
2225

2326
public class CallCenterConfiguration extends AbstractFreeswitchConfiguration {
24-
2527
private CallQueueContext m_callQueueContext;
2628
private Collection<CallQueue> m_callQueues;
2729
private Collection<CallQueueAgent> m_callQueueAgents;
@@ -31,6 +33,15 @@ public class CallCenterConfiguration extends AbstractFreeswitchConfiguration {
3133
public void setCallQueueContext(CallQueueContext callQueueContext) {
3234
m_callQueueContext = callQueueContext;
3335
}
36+
37+
@Override
38+
public List<String> getRequiredModules(FreeswitchFeature feature, Location location) {
39+
if (!feature.getConfigManager().getFeatureManager().isFeatureEnabled(CallQueueContext.FEATURE, location)) {
40+
return Collections.emptyList();
41+
}
42+
return Collections.singletonList("mod_callcenter");
43+
}
44+
3445

3546
@Override
3647
public void write(Writer writer, Location location, FreeswitchSettings settings) throws IOException {

config-plugin/src/org/sipfoundry/sipxconfig/callqueue/CallQueueContext.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import java.util.List;
1414

1515
import org.sipfoundry.sipxconfig.alias.AliasOwner;
16+
import org.sipfoundry.sipxconfig.cfgmgt.ConfigProvider;
1617
import org.sipfoundry.sipxconfig.common.ReplicableProvider;
18+
import org.sipfoundry.sipxconfig.feature.FeatureProvider;
1719
import org.sipfoundry.sipxconfig.feature.LocationFeature;
1820
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchExtensionProvider;
1921

20-
public interface CallQueueContext extends FreeswitchExtensionProvider, AliasOwner, ReplicableProvider {
22+
public interface CallQueueContext extends FreeswitchExtensionProvider, AliasOwner, ReplicableProvider, FeatureProvider, ConfigProvider {
2123

2224
public static final String CALL_FEATURE_ID = CallQueueContext.CALL_QUEUE;
2325
public static final LocationFeature FEATURE = new LocationFeature(CALL_FEATURE_ID);

config-plugin/src/org/sipfoundry/sipxconfig/callqueue/CallQueueContextImpl.java

+33-19
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,44 @@
99

1010
package org.sipfoundry.sipxconfig.callqueue;
1111

12+
import java.io.File;
13+
import java.io.IOException;
1214
import java.util.ArrayList;
1315
import java.util.Collection;
1416
import java.util.Collections;
1517
import java.util.List;
18+
import java.util.Set;
1619

1720
import org.hibernate.Query;
1821
import org.sipfoundry.sipxconfig.alias.AliasManager;
19-
import org.sipfoundry.sipxconfig.feature.Bundle;
20-
import org.sipfoundry.sipxconfig.feature.FeatureChangeRequest;
21-
import org.sipfoundry.sipxconfig.feature.FeatureChangeValidator;
22-
import org.sipfoundry.sipxconfig.feature.FeatureManager;
23-
import org.sipfoundry.sipxconfig.feature.FeatureProvider;
24-
import org.sipfoundry.sipxconfig.feature.GlobalFeature;
25-
import org.sipfoundry.sipxconfig.feature.LocationFeature;
26-
22+
import org.sipfoundry.sipxconfig.cfgmgt.ConfigManager;
23+
import org.sipfoundry.sipxconfig.cfgmgt.ConfigRequest;
24+
import org.sipfoundry.sipxconfig.cfgmgt.ConfigUtils;
2725
import org.sipfoundry.sipxconfig.common.BeanId;
26+
import org.sipfoundry.sipxconfig.common.ExtensionInUseException;
27+
import org.sipfoundry.sipxconfig.common.NameInUseException;
2828
import org.sipfoundry.sipxconfig.common.Replicable;
2929
import org.sipfoundry.sipxconfig.common.SameExtensionException;
3030
import org.sipfoundry.sipxconfig.common.SipxHibernateDaoSupport;
31-
import org.sipfoundry.sipxconfig.common.NameInUseException;
32-
import org.sipfoundry.sipxconfig.common.ExtensionInUseException;
3331
import org.sipfoundry.sipxconfig.common.UserException;
3432
import org.sipfoundry.sipxconfig.commserver.Location;
3533
import org.sipfoundry.sipxconfig.commserver.imdb.ReplicationManager;
36-
34+
import org.sipfoundry.sipxconfig.feature.Bundle;
35+
import org.sipfoundry.sipxconfig.feature.FeatureChangeRequest;
36+
import org.sipfoundry.sipxconfig.feature.FeatureChangeValidator;
37+
import org.sipfoundry.sipxconfig.feature.FeatureManager;
38+
import org.sipfoundry.sipxconfig.feature.GlobalFeature;
39+
import org.sipfoundry.sipxconfig.feature.LocationFeature;
40+
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchAction;
41+
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchCondition;
42+
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchFeature;
43+
import org.sipfoundry.sipxconfig.setting.BeanWithSettingsDao;
3744
import org.springframework.beans.factory.BeanFactory;
3845
import org.springframework.beans.factory.BeanFactoryAware;
3946
import org.springframework.beans.factory.annotation.Required;
4047
import org.springframework.dao.support.DataAccessUtils;
4148

42-
import org.sipfoundry.sipxconfig.setting.BeanWithSettingsDao;
43-
44-
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchCondition;
45-
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchAction;
46-
import org.sipfoundry.sipxconfig.freeswitch.FreeswitchFeature;
47-
48-
public class CallQueueContextImpl extends SipxHibernateDaoSupport implements CallQueueContext, BeanFactoryAware,
49-
FeatureProvider {
49+
public class CallQueueContextImpl extends SipxHibernateDaoSupport implements CallQueueContext, BeanFactoryAware {
5050

5151
private static final String QUERY_CALL_QUEUE_IDS = "callQueueIds";
5252
private static final String QUERY_CALL_QUEUE_AGENT_IDS = "callQueueAgentIds";
@@ -413,4 +413,18 @@ public void getBundleFeatures(FeatureManager featureManager, Bundle b) {
413413
}
414414
}
415415

416+
@Override
417+
public void replicate(ConfigManager manager, ConfigRequest request) throws IOException {
418+
if (!request.applies(CallQueueContext.FEATURE)) {
419+
return;
420+
}
421+
422+
Set<Location> locations = request.locations(manager);
423+
List<Location> enabledLocations = manager.getFeatureManager().getLocationsForEnabledFeature(FEATURE);
424+
for (Location location : locations) {
425+
File dir = manager.getLocationDataDirectory(location);
426+
boolean enabled = enabledLocations.contains(location);
427+
ConfigUtils.enableCfengineClass(dir, "sipxcallqueue.cfdat", enabled, "callqueue");
428+
}
429+
}
416430
}

config-plugin/src/org/sipfoundry/sipxconfig/web/plugin/CallQueueAgentSelectUser.java

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import org.apache.tapestry.IPage;
1212
import org.apache.tapestry.IRequestCycle;
13+
import org.apache.tapestry.annotations.InjectObject;
1314
import org.apache.tapestry.event.PageBeginRenderListener;
1415
import org.apache.tapestry.event.PageEvent;
1516
import org.sipfoundry.sipxconfig.callqueue.CallQueueAgent;
@@ -35,8 +36,10 @@ public abstract class CallQueueAgentSelectUser extends SipxBasePage implements P
3536

3637
public abstract CallQueueAgent getCallQueueAgent();
3738

39+
@InjectObject("spring:coreContext")
3840
public abstract CoreContext getCoreContext();
3941

42+
@InjectObject("spring:callQueueContext")
4043
public abstract CallQueueContext getCallQueueContext();
4144

4245
public abstract SipxValidationDelegate getValidator();

config-plugin/src/org/sipfoundry/sipxconfig/web/plugin/CallQueueEditSettingsPanel.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
package org.sipfoundry.sipxconfig.web.plugin;
1111

1212
import org.apache.tapestry.BaseComponent;
13+
import org.apache.tapestry.annotations.Bean;
1314
import org.apache.tapestry.annotations.ComponentClass;
1415
import org.apache.tapestry.annotations.InitialValue;
16+
import org.apache.tapestry.annotations.InjectObject;
1517
import org.apache.tapestry.annotations.Persist;
1618
import org.apache.tapestry.event.PageBeginRenderListener;
1719
import org.apache.tapestry.event.PageEvent;
1820

1921
import org.sipfoundry.sipxconfig.callqueue.CallQueueContext;
2022
import org.sipfoundry.sipxconfig.callqueue.CallQueueSettings;
23+
import org.sipfoundry.sipxconfig.components.SipxValidationDelegate;
2124

2225
@ComponentClass
2326
public abstract class CallQueueEditSettingsPanel
@@ -32,9 +35,13 @@ public abstract class CallQueueEditSettingsPanel
3235
public abstract CallQueueSettings getSettings();
3336

3437
public abstract void setSettings(CallQueueSettings settings);
35-
38+
39+
@InjectObject("spring:callQueueContext")
3640
public abstract CallQueueContext getCallQueueContext();
3741

42+
@Bean
43+
public abstract SipxValidationDelegate getValidator();
44+
3845
@Override
3946
public void pageBeginRender(PageEvent event) {
4047
if (null == getSettings()) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
feature.callqueue = Call Queue (beta)
2+
feature.callqueue.description = Simple call queues for sipXecs

config-plugin/src/sipxplugin.beans.xml

+11-1
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,20 @@
99
<bean id="callQueueHibernate" class="org.sipfoundry.sipxconfig.common.HibernateConfigurationPlugin">
1010
<property name="mappingResources">
1111
<list>
12-
<value>com/sipfoundry/sipxconfig/callqueue/callqueue.hbm.xml</value>
12+
<value>org/sipfoundry/sipxconfig/callqueue/callqueue.hbm.xml</value>
1313
</list>
1414
</property>
1515
</bean>
1616

17+
<bean id="callQueueI18n"
18+
class="org.springframework.context.support.ResourceBundleMessageSource">
19+
<property name="basename" value="sipxcallqueue" />
20+
</bean>
21+
22+
<bean id="freeswitchCallCenterConfig" class="org.sipfoundry.sipxconfig.callqueue.CallCenterConfiguration" parent="freeswitchConfigFile">
23+
<property name="callQueueContext" ref="callQueueContext" />
24+
</bean>
25+
1726
<bean id="callQueueContext" class="org.springframework.aop.framework.ProxyFactoryBean" parent="abstractDao">
1827
<property name="proxyInterfaces" value="org.sipfoundry.sipxconfig.callqueue.CallQueueContext"/>
1928
<property name="target" ref="callQueueContextImpl"/>
@@ -56,6 +65,7 @@
5665

5766
<bean id="callqueueHook" class="org.sipfoundry.sipxconfig.site.SimplePluginHook">
5867
<property name="hookId" value="CallQueueHook"/>
68+
<property name="featureId" value="callqueue"/>
5969
</bean>
6070

6171
</beans>

etc/00_sipxcallqueue.cf

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Copyright (c) 2012 eZuce, Inc. All rights reserved.
2+
# Contributed to SIPfoundry under a Contributor Agreement
3+
4+
# This software is free software; you can redistribute it and/or modify it under
5+
# the terms of the Affero General Public License (AGPL) as published by the
6+
# Free Software Foundation; either version 3 of the License, or (at your option)
7+
# any later version.
8+
9+
# This software is distributed in the hope that it will be useful, but WITHOUT
10+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11+
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
12+
# details.
13+
14+
# Needs to run before sipxfreeswitch.cf so repairs to configs
15+
# trigger fs to reload
16+
bundle agent 00_sipxcallqueue {
17+
vars:
18+
any::
19+
"conf_file" string => "callcenter.conf.xml";
20+
"conf_path" string => "$(sipx.SIPX_CONFDIR)/freeswitch/conf/autoload_configs/$(conf_file)";
21+
22+
files:
23+
!callqueue::
24+
"$(conf_path)"
25+
comment => "uninstall freeswitch call center config $(this.promiser)",
26+
delete => unlink,
27+
classes => if_repaired("reload_sipxfreeswitch");
28+
29+
callqueue::
30+
"$(conf_path)"
31+
comment => "install freeswitch call center config $(this.promiser)",
32+
create => "true",
33+
perms => m("644"),
34+
copy_from => copy_from_cfdata("$(sipx.location_id)/autoload_configs/$(conf_file)"),
35+
classes => if_repaired("reload_sipxfreeswitch");
36+
}

etc/Makefile.am

+8-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ include $(top_srcdir)/config/utility.am
22

33
confdir = $(SIPX_CONFDIR)/sipxcallqueue
44

5+
cfinputsdir = $(SIPX_CFINPUTS)/plugin.d
6+
dist_cfinputs_DATA = \
7+
00_sipxcallqueue.cf
8+
9+
dbpatchdir = $(SIPX_CONFDIR)/database/plugin.d/v12
10+
dist_dbpatch_DATA = \
11+
call-queue.sql
12+
513
xml = \
614
sipxcallqueue/CallQueueAgent.xml \
715
sipxcallqueue/CallQueue.xml \
@@ -13,7 +21,6 @@ dist_conf_DATA = \
1321
sipxcallqueue/CallQueue.properties \
1422
sipxcallqueue/CallQueueSettings.properties
1523

16-
1724
fsdir = $(SIPX_CONFDIR)/freeswitch
1825
dist_fs_DATA = \
1926
freeswitch/callcenter.conf.xml.vm

etc/call-queue.sql

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
create table call_queue_agent(
2+
call_queue_agent_id int4 not null primary key,
3+
name varchar(255) not null unique,
4+
extension varchar(255),
5+
description varchar(255),
6+
value_storage_id int4
7+
);
8+
9+
create table call_queue_tier(
10+
call_queue_agent_id int4,
11+
freeswitch_ext_id int4,
12+
position int4,
13+
level int4
14+
);
15+
16+
create sequence call_queue_agent_seq;
17+
18+
alter table call_queue_agent add constraint call_queue_agent_value_storage foreign key (value_storage_id) references value_storage;
19+
alter table call_queue_tier add constraint freeswitch_ext_id foreign key (freeswitch_ext_id) references freeswitch_extension;
20+
alter table call_queue_tier add constraint call_queue_tier_agent foreign key (call_queue_agent_id) references call_queue_agent;
21+
alter table call_queue_tier add constraint call_queue_tier_agent_queue unique (freeswitch_ext_id,call_queue_agent_id);

sipxcallqueue.spec.in

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ rm -rf $RPM_BUILD_ROOT
4343
%defattr(644,root,root,755)
4444
%{_sysconfdir}/sipxpbx/sipxcallqueue/*
4545
%{_sysconfdir}/sipxpbx/freeswitch/*
46+
%{_sysconfdir}/sipxpbx/database/plugin.d/*
47+
%{_datadir}/sipxecs/cfinputs/plugin.d/*.cf
4648
%{_datadir}/java/sipXecs/sipXconfig/plugins/sipxcallqueue-config.jar
4749

4850
%post

0 commit comments

Comments
 (0)