├── astergazer ├── src │ ├── main │ │ ├── resources │ │ │ ├── log4j.properties │ │ │ ├── application.properties │ │ │ ├── META-INF │ │ │ │ └── persistence.xml │ │ │ └── logback.xml │ │ ├── webapp │ │ │ ├── css │ │ │ │ ├── jstree │ │ │ │ │ └── default │ │ │ │ │ │ ├── 32px.png │ │ │ │ │ │ ├── 40px.png │ │ │ │ │ │ ├── throbber.gif │ │ │ │ │ │ └── block_Test.svg │ │ │ │ ├── configuration.css │ │ │ │ ├── jquery-ui │ │ │ │ │ └── smoothness_custom │ │ │ │ │ │ └── images │ │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ └── checklists.css │ │ │ ├── WEB-INF │ │ │ │ ├── jsp │ │ │ │ │ ├── configurationVariables.jsp │ │ │ │ │ ├── footer.jsp │ │ │ │ │ ├── commonVariables.jsp │ │ │ │ │ ├── error404.jsp │ │ │ │ │ ├── error400.jsp │ │ │ │ │ ├── error500.jsp │ │ │ │ │ ├── errorHeader.jsp │ │ │ │ │ ├── checklistsVariables.jsp │ │ │ │ │ ├── mappingVariables.jsp │ │ │ │ │ └── configuration.jsp │ │ │ │ └── web.xml │ │ │ ├── META-INF │ │ │ │ └── context.xml │ │ │ ├── images │ │ │ │ ├── block_Test.svg │ │ │ │ ├── block_NoOp.svg │ │ │ │ ├── checklist.svg │ │ │ │ ├── block_TrueCase.svg │ │ │ │ ├── block_Start.svg │ │ │ │ ├── button_add.svg │ │ │ │ ├── block_FalseCase.svg │ │ │ │ ├── block_Goto.svg │ │ │ │ ├── block_EqualCase.svg │ │ │ │ ├── block_Progress.svg │ │ │ │ ├── block_Busy.svg │ │ │ │ ├── block_Congestion.svg │ │ │ │ ├── block_ConfBridge.svg │ │ │ │ ├── block_MeetMe.svg │ │ │ │ ├── block_Return.svg │ │ │ │ ├── context.svg │ │ │ │ ├── button_edit.svg │ │ │ │ ├── block_ChannelRedirect.svg │ │ │ │ ├── block_StopMusicOnHold.svg │ │ │ │ ├── button_delete.svg │ │ │ │ ├── block_StartMusicOnHold.svg │ │ │ │ ├── block_ChanSpy.svg │ │ │ │ ├── block_Gosub.svg │ │ │ │ ├── button_add_extension.svg │ │ │ │ ├── block_Answer.svg │ │ │ │ ├── block_Hangup.svg │ │ │ │ ├── block_Pickup.svg │ │ │ │ ├── block_MusicOnHold.svg │ │ │ │ ├── button_add_context.svg │ │ │ │ └── block_Checklist.svg │ │ │ └── js │ │ │ │ └── messageDialog.js │ │ └── java │ │ │ └── ua │ │ │ └── dborisenko │ │ │ └── astergazer │ │ │ ├── dao │ │ │ ├── IBlockDao.java │ │ │ ├── IConfigurationDao.java │ │ │ ├── IExtensionDao.java │ │ │ ├── IChecklistEntryDao.java │ │ │ ├── IContextDao.java │ │ │ ├── IScriptDao.java │ │ │ ├── impl │ │ │ │ ├── BlockDao.java │ │ │ │ └── ConfigurationDao.java │ │ │ └── IChecklistDao.java │ │ │ ├── service │ │ │ ├── IBlockService.java │ │ │ ├── ITranslatorService.java │ │ │ ├── IExtensionService.java │ │ │ ├── IChecklistEntryService.java │ │ │ ├── IConfigurationService.java │ │ │ ├── IContextService.java │ │ │ ├── IChecklistService.java │ │ │ ├── IScriptService.java │ │ │ └── impl │ │ │ │ └── BlockService.java │ │ │ ├── model │ │ │ ├── block │ │ │ │ ├── NoCdrBlock.java │ │ │ │ ├── RingingBlock.java │ │ │ │ ├── ProgressBlock.java │ │ │ │ ├── AgiBlock.java │ │ │ │ ├── AmdBlock.java │ │ │ │ ├── BusyBlock.java │ │ │ │ ├── DialBlock.java │ │ │ │ ├── GotoBlock.java │ │ │ │ ├── NoOpBlock.java │ │ │ │ ├── ReadBlock.java │ │ │ │ ├── StopMonitorBlock.java │ │ │ │ ├── WaitBlock.java │ │ │ │ ├── MacroBlock.java │ │ │ │ ├── QueueBlock.java │ │ │ │ ├── HangupBlock.java │ │ │ │ ├── MeetMeBlock.java │ │ │ │ ├── PickupBlock.java │ │ │ │ ├── RecordBlock.java │ │ │ │ ├── ReturnBlock.java │ │ │ │ ├── SystemBlock.java │ │ │ │ ├── AnswerBlock.java │ │ │ │ ├── ChanSpyBlock.java │ │ │ │ ├── MonitorBlock.java │ │ │ │ ├── DumpChanBlock.java │ │ │ │ ├── PlaybackBlock.java │ │ │ │ ├── SendDtmfBlock.java │ │ │ │ ├── StopMusicOnHoldBlock.java │ │ │ │ ├── TransferBlock.java │ │ │ │ ├── SayDigitsBlock.java │ │ │ │ ├── SayNumberBlock.java │ │ │ │ ├── UserEventBlock.java │ │ │ │ ├── WaitExtenBlock.java │ │ │ │ ├── BackgroundBlock.java │ │ │ │ ├── ConfBridgeBlock.java │ │ │ │ ├── CongestionBlock.java │ │ │ │ ├── MixMonitorBlock.java │ │ │ │ ├── StartBlock.java │ │ │ │ ├── MusicOnHoldBlock.java │ │ │ │ ├── AddQueueMemberBlock.java │ │ │ │ ├── StopMixMonitorBlock.java │ │ │ │ ├── ChannelRedirectBlock.java │ │ │ │ ├── SipRemoveHeaderBlock.java │ │ │ │ ├── StartMusicOnHoldBlock.java │ │ │ │ ├── RemoveQueueMemberBlock.java │ │ │ │ ├── FalseCaseBlock.java │ │ │ │ ├── SetBlock.java │ │ │ │ ├── TrueCaseBlock.java │ │ │ │ ├── EqualCaseBlock.java │ │ │ │ ├── SipAddHeaderBlock.java │ │ │ │ ├── DbDelBlock.java │ │ │ │ ├── SetGlobalBlock.java │ │ │ │ ├── DbSetBlock.java │ │ │ │ ├── GotoIfBlock.java │ │ │ │ ├── DbDelTreeBlock.java │ │ │ │ ├── CustomBlock.java │ │ │ │ ├── ChecklistBlock.java │ │ │ │ ├── GosubBlock.java │ │ │ │ ├── SwitchBlock.java │ │ │ │ ├── GotoIfTimeBlock.java │ │ │ │ └── VoiceMenuBlock.java │ │ │ ├── ConfigurationParameter.java │ │ │ └── Checklist.java │ │ │ ├── exception │ │ │ ├── BlockNotFoundException.java │ │ │ ├── RecordNotFoundException.java │ │ │ ├── DaoException.java │ │ │ ├── ServiceException.java │ │ │ └── DuplicatedValueException.java │ │ │ ├── dto │ │ │ ├── ScriptDto.java │ │ │ ├── ScriptDataDto.java │ │ │ └── VoiceMenuDtoFactory.java │ │ │ ├── fastagi │ │ │ └── FastAgiServer.java │ │ │ └── controller │ │ │ ├── RestControllerExceptionHandler.java │ │ │ ├── MappingTreeController.java │ │ │ └── ChecklistTreeController.java │ └── test │ │ ├── java │ │ └── ua │ │ │ └── dborisenko │ │ │ └── astergazer │ │ │ ├── model │ │ │ ├── block │ │ │ │ ├── NoCdrBlockTest.java │ │ │ │ ├── StartBlockTest.java │ │ │ │ ├── RingingBlockTest.java │ │ │ │ ├── ProgressBlockTest.java │ │ │ │ ├── TrueCaseBlockTest.java │ │ │ │ ├── FalseCaseBlockTest.java │ │ │ │ ├── BlockTestUtil.java │ │ │ │ ├── EqualCaseBlockTest.java │ │ │ │ ├── StopMonitorBlockTest.java │ │ │ │ ├── StopMusicOnHoldBlockTest.java │ │ │ │ ├── NoOpBlockTest.java │ │ │ │ ├── AgiBlockTest.java │ │ │ │ ├── BusyBlockTest.java │ │ │ │ ├── AnswerBlockTest.java │ │ │ │ ├── ReturnBlockTest.java │ │ │ │ ├── PickupBlockTest.java │ │ │ │ ├── SetBlockTest.java │ │ │ │ ├── SystemBlockTest.java │ │ │ │ ├── DbDelBlockTest.java │ │ │ │ ├── DumpChanBlockTest.java │ │ │ │ ├── HangupBlockTest.java │ │ │ │ ├── MacroBlockTest.java │ │ │ │ ├── SayDigitsBlockTest.java │ │ │ │ ├── CongestionBlockTest.java │ │ │ │ ├── DbSetBlockTest.java │ │ │ │ ├── UserEventBlockTest.java │ │ │ │ ├── TransferBlockTest.java │ │ │ │ ├── ChanSpyBlockTest.java │ │ │ │ ├── PlaybackBlockTest.java │ │ │ │ ├── SayNumberBlockTest.java │ │ │ │ ├── StopMixMonitorBlockTest.java │ │ │ │ ├── MeetMeBlockTest.java │ │ │ │ ├── SetGlobalBlockTest.java │ │ │ │ ├── MusicOnHoldBlockTest.java │ │ │ │ ├── GotoBlockTest.java │ │ │ │ ├── SipRemoveHeaderBlockTest.java │ │ │ │ ├── StartMusicOnHoldBlockTest.java │ │ │ │ ├── DialBlockTest.java │ │ │ │ ├── MonitorBlockTest.java │ │ │ │ ├── SipAddHeaderlBlockTest.java │ │ │ │ ├── MixMonitorBlockTest.java │ │ │ │ ├── RecordBlockTest.java │ │ │ │ ├── SendDtmfBlockTest.java │ │ │ │ ├── RemoveQueueMemberBlockTest.java │ │ │ │ ├── BackgroundBlockTest.java │ │ │ │ ├── ConfBridgeBlockTest.java │ │ │ │ ├── ReadBlockTest.java │ │ │ │ ├── ChannelRedirectBlockTest.java │ │ │ │ ├── QueueBlockTest.java │ │ │ │ ├── AddQueueMemberBlockTest.java │ │ │ │ ├── AmdBlockTest.java │ │ │ │ ├── GotoIfBlockTest.java │ │ │ │ ├── CheckListBlockTest.java │ │ │ │ ├── CustomBlockTest.java │ │ │ │ ├── GotoIfTimeBlockTest.java │ │ │ │ ├── DbDelTreeBlockTest.java │ │ │ │ ├── GosubBlockTest.java │ │ │ │ ├── BlockParameterTest.java │ │ │ │ ├── SwitchBlockTest.java │ │ │ │ └── BlockTest.java │ │ │ ├── ContextTest.java │ │ │ ├── ChecklistTest.java │ │ │ ├── ChecklistEntryTest.java │ │ │ ├── ExtensionTest.java │ │ │ ├── ConfigurationParameterTest.java │ │ │ ├── ConnectionTest.java │ │ │ └── ScriptTest.java │ │ │ └── dao │ │ │ └── impl │ │ │ └── BlockDaoTest.java │ │ └── resources │ │ └── META-INF │ │ └── persistence.xml └── util │ ├── astergazer_mysql_drop.sql │ └── lib │ └── mysql-connector-java-5.1.38.jar ├── .gitignore ├── screen_mapping.png ├── screen_checklists.png └── screen_constructor.png /astergazer/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=OFF 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .settings/ 2 | .classpath 3 | .project 4 | bin/ 5 | target/ 6 | -------------------------------------------------------------------------------- /astergazer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | projectVersion=@project.version@ 2 | 3 | -------------------------------------------------------------------------------- /screen_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/screen_mapping.png -------------------------------------------------------------------------------- /screen_checklists.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/screen_checklists.png -------------------------------------------------------------------------------- /screen_constructor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/screen_constructor.png -------------------------------------------------------------------------------- /astergazer/util/astergazer_mysql_drop.sql: -------------------------------------------------------------------------------- 1 | DROP DATABASE astergazer; 2 | DROP USER astergazer@'%'; 3 | DROP USER astergazer@localhost; 4 | FLUSH PRIVILEGES; -------------------------------------------------------------------------------- /astergazer/util/lib/mysql-connector-java-5.1.38.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/util/lib/mysql-connector-java-5.1.38.jar -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jstree/default/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jstree/default/32px.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jstree/default/40px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jstree/default/40px.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jstree/default/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jstree/default/throbber.gif -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/configuration.css: -------------------------------------------------------------------------------- 1 | .label-conf-parameter-caption { 2 | margin: 10px; 3 | } 4 | 5 | .input-conf { 6 | height: 20px; 7 | margin: 10px; 8 | } 9 | 10 | .input-fastagihost { 11 | width: 200px; 12 | } -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmitriyborisenko/Astergazer/HEAD/astergazer/src/main/webapp/css/jquery-ui/smoothness_custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IBlockDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import ua.dborisenko.astergazer.model.block.Block; 4 | import ua.dborisenko.astergazer.exception.DaoException; 5 | 6 | public interface IBlockDao { 7 | 8 | void add(Block block) throws DaoException; 9 | } 10 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IBlockService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import ua.dborisenko.astergazer.model.Script; 4 | import ua.dborisenko.astergazer.exception.ServiceException; 5 | 6 | public interface IBlockService { 7 | 8 | void addStartBlockToScript(Script script) throws ServiceException; 9 | } 10 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/ITranslatorService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import ua.dborisenko.astergazer.exception.ServiceException; 4 | 5 | public interface ITranslatorService { 6 | 7 | String getTranslatedScript(Long id) throws ServiceException; 8 | 9 | String getTranslatedDialplan(); 10 | } 11 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/NoCdrBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("NoCdr") 8 | public class NoCdrBlock extends Block { 9 | 10 | public NoCdrBlock() { 11 | application = "NoCDR"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/RingingBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Ringing") 8 | public class RingingBlock extends Block { 9 | 10 | public RingingBlock() { 11 | application = "Ringing"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ProgressBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Progress") 8 | public class ProgressBlock extends Block { 9 | 10 | public ProgressBlock() { 11 | application = "Progress"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/AgiBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Agi") 8 | public class AgiBlock extends Block { 9 | 10 | public AgiBlock() { 11 | application = "AGI"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/AmdBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Amd") 8 | public class AmdBlock extends Block { 9 | 10 | public AmdBlock() { 11 | application = "AMD"; 12 | parametersCount = 9; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/BusyBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Busy") 8 | public class BusyBlock extends Block { 9 | 10 | public BusyBlock() { 11 | application = "Busy"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/DialBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Dial") 8 | public class DialBlock extends Block { 9 | 10 | public DialBlock() { 11 | application = "Dial"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/GotoBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Goto") 8 | public class GotoBlock extends Block { 9 | 10 | public GotoBlock() { 11 | application = "Goto"; 12 | parametersCount = 3; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/NoOpBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("NoOp") 8 | public class NoOpBlock extends Block { 9 | 10 | public NoOpBlock() { 11 | application = "NoOp"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ReadBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Read") 8 | public class ReadBlock extends Block { 9 | 10 | public ReadBlock() { 11 | application = "Read"; 12 | parametersCount = 6; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/StopMonitorBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("StopMonitor") 8 | public class StopMonitorBlock extends Block { 9 | 10 | public StopMonitorBlock() { 11 | application = "StopMonitor"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/WaitBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Wait") 8 | public class WaitBlock extends Block { 9 | 10 | public WaitBlock() { 11 | application = "Wait"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/MacroBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Macro") 8 | public class MacroBlock extends Block { 9 | 10 | public MacroBlock() { 11 | application = "Macro"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/QueueBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Queue") 8 | public class QueueBlock extends Block { 9 | 10 | public QueueBlock() { 11 | application = "Queue"; 12 | parametersCount = 10; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/HangupBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Hangup") 8 | public class HangupBlock extends Block { 9 | 10 | public HangupBlock() { 11 | application = "Hangup"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/MeetMeBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("MeetMe") 8 | public class MeetMeBlock extends Block { 9 | 10 | public MeetMeBlock() { 11 | application = "MeetMe"; 12 | parametersCount = 3; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/PickupBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Pickup") 8 | public class PickupBlock extends Block { 9 | 10 | public PickupBlock() { 11 | application = "Pickup"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/RecordBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Record") 8 | public class RecordBlock extends Block { 9 | 10 | public RecordBlock() { 11 | application = "Record"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ReturnBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Return") 8 | public class ReturnBlock extends Block { 9 | 10 | public ReturnBlock() { 11 | application = "Return"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SystemBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("System") 8 | public class SystemBlock extends Block { 9 | 10 | public SystemBlock() { 11 | application = "System"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/AnswerBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Answer") 8 | public class AnswerBlock extends Block { 9 | 10 | public AnswerBlock() { 11 | application = "Answer"; 12 | parametersCount = 1; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ChanSpyBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("ChanSpy") 8 | public class ChanSpyBlock extends Block { 9 | 10 | public ChanSpyBlock() { 11 | application = "ChanSpy"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/MonitorBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Monitor") 8 | public class MonitorBlock extends Block { 9 | 10 | public MonitorBlock() { 11 | application = "Monitor"; 12 | parametersCount = 3; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/DumpChanBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("DumpChan") 8 | public class DumpChanBlock extends Block { 9 | 10 | public DumpChanBlock() { 11 | application = "DumpChan"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/PlaybackBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Playback") 8 | public class PlaybackBlock extends Block { 9 | 10 | public PlaybackBlock() { 11 | application = "Playback"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SendDtmfBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SendDtmf") 8 | public class SendDtmfBlock extends Block { 9 | 10 | public SendDtmfBlock() { 11 | application = "SendDTMF"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/StopMusicOnHoldBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("StopMusicOnHold") 8 | public class StopMusicOnHoldBlock extends Block { 9 | 10 | public StopMusicOnHoldBlock() { 11 | application = "StopMusicOnHold"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/TransferBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Transfer") 8 | public class TransferBlock extends Block { 9 | 10 | public TransferBlock() { 11 | application = "Transfer"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/configurationVariables.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 8 | 9 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SayDigitsBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SayDigits") 8 | public class SayDigitsBlock extends Block { 9 | 10 | public SayDigitsBlock() { 11 | application = "SayDigits"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SayNumberBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SayNumber") 8 | public class SayNumberBlock extends Block { 9 | 10 | public SayNumberBlock() { 11 | application = "SayNumber"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/UserEventBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("UserEvent") 8 | public class UserEventBlock extends Block { 9 | 10 | public UserEventBlock() { 11 | application = "UserEvent"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/WaitExtenBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("WaitExten") 8 | public class WaitExtenBlock extends Block { 9 | 10 | public WaitExtenBlock() { 11 | application = "WaitExten"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/exception/BlockNotFoundException.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.exception; 2 | 3 | public class BlockNotFoundException extends NullPointerException { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public BlockNotFoundException() { 8 | super(); 9 | } 10 | 11 | public BlockNotFoundException(String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/BackgroundBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Background") 8 | public class BackgroundBlock extends Block { 9 | 10 | public BackgroundBlock() { 11 | application = "Background"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ConfBridgeBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("ConfBridge") 8 | public class ConfBridgeBlock extends Block { 9 | 10 | public ConfBridgeBlock() { 11 | application = "ConfBridge"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/CongestionBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Congestion") 8 | public class CongestionBlock extends Block { 9 | 10 | public CongestionBlock() { 11 | application = "Congestion"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/MixMonitorBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("MixMonitor") 8 | public class MixMonitorBlock extends Block { 9 | 10 | public MixMonitorBlock() { 11 | application = "MixMonitor"; 12 | parametersCount = 3; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/StartBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Start") 8 | public class StartBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | return buildCommandString(getLabel(), "NoOp", "start"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/exception/RecordNotFoundException.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.exception; 2 | 3 | public class RecordNotFoundException extends NullPointerException { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public RecordNotFoundException() { 8 | super(); 9 | } 10 | 11 | public RecordNotFoundException(String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/MusicOnHoldBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("MusicOnHold") 8 | public class MusicOnHoldBlock extends Block { 9 | 10 | public MusicOnHoldBlock() { 11 | application = "MusicOnHold"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/AddQueueMemberBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("AddQueueMember") 8 | public class AddQueueMemberBlock extends Block { 9 | 10 | public AddQueueMemberBlock() { 11 | application = "AddQueueMember"; 12 | parametersCount = 6; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/StopMixMonitorBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("StopMixMonitor") 8 | public class StopMixMonitorBlock extends Block { 9 | 10 | public StopMixMonitorBlock() { 11 | application = "StopMixMonitor"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/ChannelRedirectBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("ChannelRedirect") 8 | public class ChannelRedirectBlock extends Block { 9 | 10 | public ChannelRedirectBlock() { 11 | application = "ChannelRedirect"; 12 | parametersCount = 4; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SipRemoveHeaderBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SipRemoveHeader") 8 | public class SipRemoveHeaderBlock extends Block { 9 | 10 | public SipRemoveHeaderBlock() { 11 | application = "SIPRemoveHeader"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/StartMusicOnHoldBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("StartMusicOnHold") 8 | public class StartMusicOnHoldBlock extends Block { 9 | 10 | public StartMusicOnHoldBlock() { 11 | application = "StartMusicOnHold"; 12 | parametersCount = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IExtensionService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import ua.dborisenko.astergazer.exception.ServiceException; 4 | 5 | public interface IExtensionService { 6 | 7 | void create(String name, Long contextId, Long scriptId) throws ServiceException; 8 | 9 | void update(Long id, Long scriptId, String name) throws ServiceException; 10 | 11 | void delete(Long id) throws ServiceException; 12 | } 13 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/RemoveQueueMemberBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("RemoveQueueMember") 8 | public class RemoveQueueMemberBlock extends Block { 9 | 10 | public RemoveQueueMemberBlock() { 11 | application = "RemoveQueueMember"; 12 | parametersCount = 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/META-INF/context.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 15 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 10 | 11 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/FalseCaseBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("FalseCase") 8 | public class FalseCaseBlock extends Block { 9 | 10 | @Override 11 | public String getLabel() { 12 | return "Case_" + getLocalId(); 13 | } 14 | 15 | @Override 16 | public String translate() { 17 | return buildCommandString(getLabel(), "NoOp", "false"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/exception/DaoException.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.exception; 2 | 3 | public class DaoException extends Exception { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public DaoException() { 8 | super(); 9 | } 10 | 11 | public DaoException(String message) { 12 | super(message); 13 | } 14 | 15 | public DaoException(Throwable cause) { 16 | super(cause); 17 | } 18 | 19 | public DaoException(String message, Throwable cause) { 20 | super(message, cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IChecklistEntryService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import ua.dborisenko.astergazer.exception.ServiceException; 4 | 5 | public interface IChecklistEntryService { 6 | 7 | void create(String controlValue, String returnValue, Long checklistId) throws ServiceException; 8 | 9 | void update(Long id, String controlValue, String returnValue) throws ServiceException; 10 | 11 | void delete(Long id) throws ServiceException; 12 | 13 | String getReturnValue(Long checklistId, String controlValue) throws ServiceException; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IConfigurationDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.model.ConfigurationParameter; 6 | import ua.dborisenko.astergazer.model.ConfigurationParameter.PARAM_NAME; 7 | import ua.dborisenko.astergazer.exception.DaoException; 8 | 9 | public interface IConfigurationDao { 10 | 11 | List getAll() throws DaoException; 12 | 13 | ConfigurationParameter get(PARAM_NAME parameter) throws DaoException; 14 | 15 | void set(ConfigurationParameter parameter) throws DaoException; 16 | } 17 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/exception/ServiceException.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.exception; 2 | 3 | public class ServiceException extends Exception { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public ServiceException() { 8 | super(); 9 | } 10 | 11 | public ServiceException(String message) { 12 | super(message); 13 | } 14 | 15 | public ServiceException(Throwable cause) { 16 | super(cause); 17 | } 18 | 19 | public ServiceException(String message, Throwable cause) { 20 | super(message, cause); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SetBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Set") 8 | public class SetBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder result = new StringBuilder(getParameters().get(0).getValue()); 13 | result.append("="); 14 | result.append(getParameters().get(1).getValue()); 15 | return buildCommandString(getLabel(), "Set", result.toString()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IConfigurationService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import java.util.Collection; 4 | import java.util.Set; 5 | 6 | import ua.dborisenko.astergazer.model.ConfigurationParameter; 7 | import ua.dborisenko.astergazer.exception.ServiceException; 8 | 9 | public interface IConfigurationService { 10 | 11 | ConfigurationParameter getFastAgiHost(); 12 | 13 | ConfigurationParameter getModificationStamp(); 14 | 15 | Collection getAll(); 16 | 17 | void setAll(Set parameters) throws ServiceException; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/NoCdrBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class NoCdrBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),NoCDR()\n"; 14 | NoCdrBlock block = new NoCdrBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/TrueCaseBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("TrueCase") 8 | public class TrueCaseBlock extends Block { 9 | 10 | public TrueCaseBlock() { 11 | this.isCaseBlock = true; 12 | } 13 | 14 | @Override 15 | public String getLabel() { 16 | return "Case_" + getLocalId(); 17 | } 18 | 19 | @Override 20 | public String translate() { 21 | return buildCommandString(getLabel(), "NoOp", "true"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/StartBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class StartBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),NoOp(start)\n"; 14 | StartBlock block = new StartBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/RingingBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class RingingBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Ringing()\n"; 14 | RingingBlock block = new RingingBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/ProgressBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class ProgressBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Progress()\n"; 14 | ProgressBlock block = new ProgressBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/TrueCaseBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class TrueCaseBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | int localId = 42; 13 | String expectedResult = Block.COMMAND_PREFIX + "Case_" + localId + "),NoOp(true)\n"; 14 | TrueCaseBlock block = new TrueCaseBlock(); 15 | block.setLocalId(localId); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/EqualCaseBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("EqualCase") 8 | public class EqualCaseBlock extends Block { 9 | 10 | public EqualCaseBlock() { 11 | this.isCaseBlock = true; 12 | } 13 | 14 | @Override 15 | public String getLabel() { 16 | return "EqualCase_" + getLocalId(); 17 | } 18 | 19 | @Override 20 | public String translate() { 21 | return buildCommandString(getLabel(), "NoOp", "EqualCase"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SipAddHeaderBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SipAddHeader") 8 | public class SipAddHeaderBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder result = new StringBuilder(getParameters().get(0).getValue()); 13 | result.append(":"); 14 | result.append(getParameters().get(1).getValue()); 15 | return buildCommandString(getLabel(), "SIPAddHeader", result.toString()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/FalseCaseBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class FalseCaseBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | int localId = 42; 13 | String expectedResult = Block.COMMAND_PREFIX + "Case_" + localId + "),NoOp(false)\n"; 14 | FalseCaseBlock block = new FalseCaseBlock(); 15 | block.setLocalId(localId); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/DbDelBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("DbDel") 8 | public class DbDelBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder parameterString = new StringBuilder(getParameters().get(0).getValue()); 13 | parameterString.append("/"); 14 | parameterString.append(getParameters().get(1).getValue()); 15 | return buildCommandString(getLabel(), "DBdel", parameterString.toString()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/commonVariables.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 12 | 13 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/BlockTestUtil.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class BlockTestUtil { 6 | 7 | void setBlockParameters(Block block, String caption, String[] parameters) { 8 | block.setCaption(caption); 9 | block.setParameters(new ArrayList<>()); 10 | for (int i = 0; i < parameters.length; i++) { 11 | BlockParameter parameter = new BlockParameter(); 12 | parameter.setOrderIndex(i); 13 | parameter.setValue(parameters[i]); 14 | block.getParameters().add(parameter); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/EqualCaseBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class EqualCaseBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | int localId = 42; 13 | String expectedResult = Block.COMMAND_PREFIX + "EqualCase_" + localId + "),NoOp(EqualCase)\n"; 14 | EqualCaseBlock block = new EqualCaseBlock(); 15 | block.setLocalId(localId); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/StopMonitorBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class StopMonitorBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),StopMonitor()\n"; 14 | StopMonitorBlock block = new StopMonitorBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/exception/DuplicatedValueException.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.exception; 2 | 3 | public class DuplicatedValueException extends IllegalArgumentException { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public DuplicatedValueException() { 8 | super(); 9 | } 10 | 11 | public DuplicatedValueException(String message) { 12 | super(message); 13 | } 14 | 15 | public DuplicatedValueException(Throwable cause) { 16 | super(cause); 17 | } 18 | 19 | public DuplicatedValueException(String message, Throwable cause) { 20 | super(message, cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SetGlobalBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("SetGlobal") 8 | public class SetGlobalBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder result = new StringBuilder("GLOBAL("); 13 | result.append(getParameters().get(0).getValue()); 14 | result.append(")="); 15 | result.append(getParameters().get(1).getValue()); 16 | return buildCommandString(getLabel(), "Set", result.toString()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IExtensionDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import ua.dborisenko.astergazer.model.Extension; 4 | import ua.dborisenko.astergazer.exception.DaoException; 5 | 6 | public interface IExtensionDao { 7 | 8 | Extension get(Long id) throws DaoException; 9 | 10 | void add(Extension extension) throws DaoException; 11 | 12 | long getCount(Long id, Long contextId, String name) throws DaoException; 13 | 14 | void update(Extension extension) throws DaoException; 15 | 16 | void delete(Long id) throws DaoException; 17 | 18 | void unlinkAllExtensionsFromScript(Long scriptId) throws DaoException; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/StopMusicOnHoldBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class StopMusicOnHoldBlockTest { 9 | 10 | @Test 11 | public void translateTest() { 12 | String caption = "caption"; 13 | String expectedResult = Block.COMMAND_PREFIX + caption + "),StopMusicOnHold()\n"; 14 | StopMusicOnHoldBlock block = new StopMusicOnHoldBlock(); 15 | block.setCaption(caption); 16 | 17 | assertThat(block.translate(), is(expectedResult)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dto/ScriptDto.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dto; 2 | 3 | import ua.dborisenko.astergazer.model.Script; 4 | 5 | public class ScriptDto { 6 | 7 | private Long id; 8 | private String name; 9 | 10 | public ScriptDto(Script script) { 11 | this.id = script.getId(); 12 | this.name = script.getName(); 13 | } 14 | 15 | public Long getId() { 16 | return id; 17 | } 18 | 19 | public void setId(Long id) { 20 | this.id = id; 21 | } 22 | 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | public void setName(String name) { 28 | this.name = name; 29 | } 30 | } -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IContextService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.dto.JsTreeNodeDto; 6 | import ua.dborisenko.astergazer.exception.ServiceException; 7 | import ua.dborisenko.astergazer.model.Context; 8 | 9 | public interface IContextService { 10 | 11 | void create(String name) throws ServiceException; 12 | 13 | List getContextsTreeDto() throws ServiceException; 14 | 15 | void update(Long id, String name) throws ServiceException; 16 | 17 | Context clone(Long id, String name) throws ServiceException; 18 | 19 | void delete(Long id) throws ServiceException; 20 | } 21 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IChecklistEntryDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import ua.dborisenko.astergazer.model.ChecklistEntry; 4 | import ua.dborisenko.astergazer.exception.DaoException; 5 | 6 | public interface IChecklistEntryDao { 7 | 8 | ChecklistEntry get(Long id) throws DaoException; 9 | 10 | void add(ChecklistEntry entry) throws DaoException; 11 | 12 | long getCount(Long id, Long checklistId, String controlValue) throws DaoException; 13 | 14 | void update(ChecklistEntry entry) throws DaoException; 15 | 16 | void delete(Long id) throws DaoException; 17 | 18 | String getReturnValue(Long checklistId, String controlValue) throws DaoException; 19 | } 20 | -------------------------------------------------------------------------------- /astergazer/src/main/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | org.hibernate.jpa.HibernatePersistenceProvider 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IContextDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.model.Context; 6 | import ua.dborisenko.astergazer.exception.DaoException; 7 | import ua.dborisenko.astergazer.exception.DuplicatedValueException; 8 | 9 | public interface IContextDao { 10 | 11 | Context get(Long id) throws DaoException; 12 | 13 | List getAll() throws DaoException; 14 | 15 | void add(Context context) throws DuplicatedValueException, DaoException; 16 | 17 | long getCount(Long id, String name) throws DaoException; 18 | 19 | void update(Context context) throws DaoException; 20 | 21 | void delete(Long id) throws DaoException; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/DbSetBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("DbSet") 8 | public class DbSetBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder result = new StringBuilder("DB("); 13 | result.append(getParameters().get(0).getValue()); 14 | result.append("/"); 15 | result.append(getParameters().get(1).getValue()); 16 | result.append(")="); 17 | result.append(getParameters().get(2).getValue()); 18 | return buildCommandString(getLabel(), "Set", result.toString()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/error404.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 5 | 6 | 7 | 8 |
9 |
10 |

: 404

11 |

12 |
13 |
14 | 15 | 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/error400.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 5 | 6 | 7 | 8 |
9 |
10 |

: 400

11 |

12 |
13 |
14 | 15 | 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/error500.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 5 | 6 | 7 | 8 |
9 |
10 |

: 500

11 |

12 |
13 |
14 | 15 | 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/NoOpBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class NoOpBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "text" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),NoOp(text)\n"; 17 | NoOpBlock block = new NoOpBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/AgiBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class AgiBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "command" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),AGI(command)\n"; 17 | AgiBlock block = new AgiBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/BusyBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class BusyBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "timeout" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Busy(timeout)\n"; 17 | BusyBlock block = new BusyBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/AnswerBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class AnswerBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "delay" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Answer(delay)\n"; 17 | AnswerBlock block = new AnswerBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/ReturnBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class ReturnBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "value" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Return(value)\n"; 17 | ReturnBlock block = new ReturnBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/IScriptDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.model.Script; 6 | import ua.dborisenko.astergazer.exception.DaoException; 7 | import ua.dborisenko.astergazer.exception.DuplicatedValueException; 8 | 9 | public interface IScriptDao { 10 | 11 | Script get(Long id) throws DaoException; 12 | 13 | Script getFull(Long id) throws DaoException; 14 | 15 | void add(Script script) throws DuplicatedValueException, DaoException; 16 | 17 | List 18 | 19 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/GosubBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import javax.persistence.DiscriminatorValue; 4 | import javax.persistence.Entity; 5 | 6 | @Entity 7 | @DiscriminatorValue("Gosub") 8 | public class GosubBlock extends Block { 9 | 10 | @Override 11 | public String translate() { 12 | StringBuilder parameterString = new StringBuilder(getParameters().get(0).getValue()); 13 | parameterString.append(","); 14 | parameterString.append(getParameters().get(1).getValue()); 15 | parameterString.append(","); 16 | parameterString.append(getParameters().get(2).getValue()); 17 | if (getParameters().size() >= 4) { 18 | if (!"".equals(getParameters().get(3).getValue())) { 19 | parameterString.append("("); 20 | parameterString.append(getParameters().get(3).getValue()); 21 | parameterString.append(")"); 22 | } 23 | } 24 | return buildCommandString(getLabel(), "Gosub", parameterString.toString()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_NoOp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/IScriptService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.model.Script; 6 | import ua.dborisenko.astergazer.dto.JsTreeNodeDto; 7 | import ua.dborisenko.astergazer.dto.ScriptDataDto; 8 | import ua.dborisenko.astergazer.dto.ScriptDto; 9 | import ua.dborisenko.astergazer.exception.ServiceException; 10 | 11 | public interface IScriptService { 12 | 13 | void create(String name) throws ServiceException; 14 | 15 | List getScriptsTreeDto() throws ServiceException; 16 | 17 | List getScriptsDto() throws ServiceException; 18 | 19 | Script get(Long id) throws ServiceException; 20 | 21 | ScriptDataDto getScriptDataDto(Long id) throws ServiceException; 22 | 23 | void update(Long id, String name) throws ServiceException; 24 | 25 | void updateData(Long id, ScriptDataDto dto) throws ServiceException; 26 | 27 | Script clone(Long id, String name) throws ServiceException; 28 | 29 | void delete(Long id) throws ServiceException; 30 | 31 | String getModificationStamp(Long id); 32 | } 33 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/AmdBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class AmdBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "initialSilence", "greeting", "afterGreetingSilence", "totalAnalysisTime", 16 | "minimumWordLength", "betweenWordSilence", "maximumNumberOfWords", "silenceThreshold", 17 | "maximumWordLength" }; 18 | String expectedResult = Block.COMMAND_PREFIX + caption 19 | + "),AMD(initialSilence,greeting,afterGreetingSilence,totalAnalysisTime,minimumWordLength,betweenWordSilence,maximumNumberOfWords,silenceThreshold,maximumWordLength)\n"; 20 | AmdBlock block = new AmdBlock(); 21 | blockTestUtil.setBlockParameters(block, caption, parameters); 22 | 23 | assertThat(block.translate(), is(expectedResult)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/GotoIfBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | import org.junit.Test; 10 | 11 | public class GotoIfBlockTest { 12 | 13 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 14 | 15 | @Test 16 | public void translateTest() { 17 | String caption = "caption"; 18 | int trueCaseLocalId = 42; 19 | String[] parameters = { "expression" }; 20 | String expectedResult = Block.COMMAND_PREFIX + caption + "),GotoIf($[expression]?Case_" + trueCaseLocalId + ")\n"; 21 | GotoIfBlock block = new GotoIfBlock(); 22 | TrueCaseBlock trueCaseBlock = new TrueCaseBlock(); 23 | trueCaseBlock.setLocalId(trueCaseLocalId); 24 | List trueCaseBlocks = new ArrayList<>(); 25 | trueCaseBlocks.add(trueCaseBlock); 26 | blockTestUtil.setBlockParameters(block, caption, parameters); 27 | 28 | assertThat(block.translate(trueCaseBlocks), is(expectedResult)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/SwitchBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import java.util.List; 4 | 5 | import javax.persistence.DiscriminatorValue; 6 | import javax.persistence.Entity; 7 | 8 | @Entity 9 | @DiscriminatorValue("Switch") 10 | public class SwitchBlock extends Block { 11 | 12 | public SwitchBlock() { 13 | this.isSwitcher = true; 14 | } 15 | 16 | @Override 17 | public String translate(List trueCaseBlocks) { 18 | String expression = getParameters().get(0).getValue(); 19 | StringBuilder result = new StringBuilder(buildCommandString(getLabel(), "NoOp", "switch")); 20 | for (Block block : trueCaseBlocks) { 21 | StringBuilder command = new StringBuilder("$["); 22 | command.append(expression); 23 | command.append("="); 24 | command.append(block.getCaption()); 25 | command.append("]?"); 26 | command.append(block.getLabel()); 27 | result.append(buildCommandString(getLabel() + "_" + block.getLabel(), "GotoIf", command.toString())); 28 | } 29 | return result.toString(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/controller/RestControllerExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.controller; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.http.HttpStatus; 8 | import org.springframework.http.ResponseEntity; 9 | import org.springframework.web.bind.annotation.ControllerAdvice; 10 | import org.springframework.web.bind.annotation.ExceptionHandler; 11 | import org.springframework.web.bind.annotation.ResponseBody; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | @ControllerAdvice(annotations = RestController.class) 15 | public class RestControllerExceptionHandler { 16 | 17 | private static final Logger log = LoggerFactory.getLogger(RestControllerExceptionHandler.class); 18 | 19 | @ExceptionHandler(Exception.class) 20 | @ResponseBody 21 | public ResponseEntity handleException(HttpServletRequest request, Exception e) { 22 | log.error("Error during request execution {}", request.getRequestURL(), e); 23 | return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/checklist.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/GotoIfTimeBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import java.util.List; 4 | 5 | import javax.persistence.DiscriminatorValue; 6 | import javax.persistence.Entity; 7 | 8 | @Entity 9 | @DiscriminatorValue("GotoIfTime") 10 | public class GotoIfTimeBlock extends Block { 11 | 12 | public GotoIfTimeBlock() { 13 | this.isSwitcher = true; 14 | } 15 | 16 | @Override 17 | public String translate(List trueCaseBlocks) { 18 | StringBuilder result = new StringBuilder(); 19 | for (int i = 0; i <= 3; i++) { 20 | if ("".equals(getParameters().get(i).getValue())) { 21 | result.append("*"); 22 | } else { 23 | result.append(getParameters().get(i).getValue()); 24 | } 25 | result.append(","); 26 | } 27 | if (!"".equals(getParameters().get(4).getValue())) { 28 | result.append(getParameters().get(4).getValue()); 29 | } 30 | result.append("?Case_"); 31 | result.append(trueCaseBlocks.get(0).getLocalId()); 32 | return buildCommandString(getLabel(), "GotoIfTime", result.toString()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/CheckListBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | import org.junit.Test; 10 | 11 | public class CheckListBlockTest { 12 | 13 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 14 | 15 | @Test 16 | public void translateTest() { 17 | String fastAgiHost = "testHost"; 18 | String caption = "caption"; 19 | String[] parameters = { "checklist", "expression" }; 20 | String expectedResult = Block.COMMAND_PREFIX + caption + "),AGI(agi://" + fastAgiHost + ":4573/checklist.agi?listName=checklist&expression=expression&trueCaseLabel=Case_0)\n"; 21 | ChecklistBlock block = new ChecklistBlock(); 22 | TrueCaseBlock trueCaseBlock = new TrueCaseBlock(); 23 | List trueCaseBlocks = new ArrayList<>(); 24 | trueCaseBlocks.add(trueCaseBlock); 25 | blockTestUtil.setBlockParameters(block, caption, parameters); 26 | 27 | assertThat(block.translate(trueCaseBlocks, fastAgiHost), is(expectedResult)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/dao/impl/BlockDaoTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao.impl; 2 | 3 | import static org.mockito.Matchers.any; 4 | import static org.mockito.Mockito.doThrow; 5 | import static org.mockito.Mockito.verify; 6 | 7 | import javax.persistence.EntityManager; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.mockito.InjectMocks; 12 | import org.mockito.Mock; 13 | import org.mockito.runners.MockitoJUnitRunner; 14 | 15 | import ua.dborisenko.astergazer.model.block.Block; 16 | import ua.dborisenko.astergazer.exception.DaoException; 17 | 18 | @RunWith(MockitoJUnitRunner.class) 19 | public class BlockDaoTest { 20 | 21 | @Mock 22 | private EntityManager mockEm; 23 | 24 | @InjectMocks 25 | private BlockDao blockDao; 26 | 27 | @Test 28 | public void addBlockTest() throws DaoException { 29 | Block block = new Block(); 30 | blockDao.add(block); 31 | verify(mockEm).persist(block); 32 | } 33 | 34 | @Test(expected = DaoException.class) 35 | public void addBlockExceptionTest() throws DaoException { 36 | doThrow(Exception.class).when(mockEm).persist(any()); 37 | blockDao.add(new Block()); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/CustomBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class CustomBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "command0", "command1", "command2", "command3", "command4", "command5", "command6", 16 | "command7", "command8", "command9", "command10", "command11", "command12", "command13", "command14" }; 17 | StringBuilder expectedResult = new StringBuilder(Block.COMMAND_PREFIX + caption + "),command0\n"); 18 | for (int i = 1; i < 15; i++) { 19 | expectedResult.append(Block.COMMAND_PREFIX).append(caption).append("_").append(i).append("),command") 20 | .append(i).append("\n"); 21 | } 22 | CustomBlock block = new CustomBlock(); 23 | blockTestUtil.setBlockParameters(block, caption, parameters); 24 | 25 | assertThat(block.translate(), is(expectedResult.toString())); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/mappingVariables.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 21 | 22 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | contextConfigLocation 5 | /WEB-INF/applicationContext*.xml 6 | 7 | 8 | 9 | org.springframework.web.context.ContextLoaderListener 10 | 11 | 12 | 13 | webmvc-servlet 14 | 15 | org.springframework.web.servlet.DispatcherServlet 16 | 17 | 18 | contextConfigLocation 19 | 20 | 21 | 1 22 | 23 | 24 | 25 | webmvc-servlet 26 | / 27 | 28 | 29 | 404 30 | /WEB-INF/jsp/error404.jsp 31 | 32 | 33 | 400 34 | /WEB-INF/jsp/error400.jsp 35 | 36 | 37 | 500 38 | /WEB-INF/jsp/error500.jsp 39 | 40 | 41 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/GotoIfTimeBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | import org.junit.Test; 10 | 11 | public class GotoIfTimeBlockTest { 12 | 13 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 14 | 15 | @Test 16 | public void translateTest() { 17 | String caption = "caption"; 18 | int trueCaseLocalId = 42; 19 | String[] parameters = { "timeInterval", "weekDays", "monthDays", "months", "timeZone" }; 20 | String expectedResult = Block.COMMAND_PREFIX + caption + "),GotoIfTime(timeInterval,weekDays,monthDays,months,timeZone?Case_" + trueCaseLocalId + ")\n"; 21 | GotoIfTimeBlock block = new GotoIfTimeBlock(); 22 | TrueCaseBlock trueCaseBlock = new TrueCaseBlock(); 23 | trueCaseBlock.setLocalId(trueCaseLocalId); 24 | List trueCaseBlocks = new ArrayList<>(); 25 | trueCaseBlocks.add(trueCaseBlock); 26 | blockTestUtil.setBlockParameters(block, caption, parameters); 27 | 28 | assertThat(block.translate(trueCaseBlocks), is(expectedResult)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/DbDelTreeBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class DbDelTreeBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "family", "keytree" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),DBdeltree(family/keytree)\n"; 17 | DbDelTreeBlock block = new DbDelTreeBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | 23 | @Test 24 | public void translateOnlyFamilyTest() { 25 | String caption = "caption"; 26 | String[] parameters = { "family" }; 27 | String expectedResult = Block.COMMAND_PREFIX + caption + "),DBdeltree(family)\n"; 28 | DbDelTreeBlock block = new DbDelTreeBlock(); 29 | blockTestUtil.setBlockParameters(block, caption, parameters); 30 | 31 | assertThat(block.translate(), is(expectedResult)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/controller/MappingTreeController.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.controller; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import ua.dborisenko.astergazer.dto.JsTreeNodeDto; 11 | import ua.dborisenko.astergazer.exception.ServiceException; 12 | import ua.dborisenko.astergazer.service.IContextService; 13 | import ua.dborisenko.astergazer.service.IScriptService; 14 | 15 | @RestController 16 | @RequestMapping(value = "/mapping/tree") 17 | public class MappingTreeController { 18 | 19 | @Autowired 20 | private IScriptService scriptService; 21 | 22 | @Autowired 23 | private IContextService contextService; 24 | 25 | @GetMapping(value = "/getscripts") 26 | public List getScripts() throws ServiceException { 27 | return scriptService.getScriptsTreeDto(); 28 | } 29 | 30 | @GetMapping(value = "/getcontexts") 31 | public List getDialplanTree() throws ServiceException { 32 | return contextService.getContextsTreeDto(); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_TrueCase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/controller/ChecklistTreeController.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.controller; 2 | 3 | 4 | import java.util.List; 5 | 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PathVariable; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.RestController; 11 | 12 | import ua.dborisenko.astergazer.dto.JsTreeNodeDynamicDto; 13 | import ua.dborisenko.astergazer.exception.ServiceException; 14 | import ua.dborisenko.astergazer.service.IChecklistService; 15 | 16 | @RestController 17 | @RequestMapping(value = "/checklists/tree") 18 | public class ChecklistTreeController { 19 | 20 | @Autowired 21 | private IChecklistService checklistService; 22 | 23 | @GetMapping(value = "/getchecklists") 24 | public List getCheckLists() throws ServiceException { 25 | return checklistService.getChecklistsTreeDto(); 26 | } 27 | 28 | @GetMapping(value = "/getentries/{checklistId}") 29 | public List getEntries(@PathVariable Long checklistId) throws ServiceException { 30 | return checklistService.getEntriesTreeDto(checklistId); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dto/ScriptDataDto.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dto; 2 | 3 | import java.util.List; 4 | 5 | import ua.dborisenko.astergazer.model.Connection; 6 | import ua.dborisenko.astergazer.model.Script; 7 | import ua.dborisenko.astergazer.model.block.Block; 8 | 9 | public class ScriptDataDto { 10 | 11 | private List blocks; 12 | 13 | private List connections; 14 | 15 | private String modificationStamp; 16 | 17 | public ScriptDataDto() { 18 | } 19 | 20 | public ScriptDataDto(Script script) { 21 | this.blocks = script.getBlocks(); 22 | this.connections = script.getConnections(); 23 | } 24 | 25 | public List getBlocks() { 26 | return blocks; 27 | } 28 | 29 | public void setBlocks(List blocks) { 30 | this.blocks = blocks; 31 | } 32 | 33 | public List getConnections() { 34 | return connections; 35 | } 36 | 37 | public void setConnections(List connections) { 38 | this.connections = connections; 39 | } 40 | 41 | public String getModificationStamp() { 42 | return modificationStamp; 43 | } 44 | 45 | public void setModificationStamp(String modificationStamp) { 46 | this.modificationStamp = modificationStamp; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/GosubBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import org.junit.Test; 7 | 8 | public class GosubBlockTest { 9 | 10 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 11 | 12 | @Test 13 | public void translateTest() { 14 | String caption = "caption"; 15 | String[] parameters = { "context", "extension", "priority", "arguments" }; 16 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Gosub(context,extension,priority(arguments))\n"; 17 | GosubBlock block = new GosubBlock(); 18 | blockTestUtil.setBlockParameters(block, caption, parameters); 19 | 20 | assertThat(block.translate(), is(expectedResult)); 21 | } 22 | 23 | @Test 24 | public void translateNoArgumentsTest() { 25 | String caption = "caption"; 26 | String[] parameters = { "context", "extension", "priority" }; 27 | String expectedResult = Block.COMMAND_PREFIX + caption + "),Gosub(context,extension,priority)\n"; 28 | GosubBlock block = new GosubBlock(); 29 | blockTestUtil.setBlockParameters(block, caption, parameters); 30 | 31 | assertThat(block.translate(), is(expectedResult)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/BlockParameterTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class BlockParameterTest { 19 | @PersistenceContext 20 | private EntityManager em; 21 | 22 | @Test 23 | public void mappingTest() { 24 | BlockParameter parameter = new BlockParameter(); 25 | parameter.setOrderIndex(1); 26 | parameter.setValue("testValue"); 27 | 28 | em.persist(parameter); 29 | em.clear(); 30 | long id = parameter.getId(); 31 | BlockParameter resultParameter = em.find(BlockParameter.class, id); 32 | 33 | assertThat(resultParameter.getOrderIndex(), is(1)); 34 | assertThat(resultParameter.getValue(), is("testValue")); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /astergazer/src/test/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | org.hibernate.jpa.HibernatePersistenceProvider 9 | 10 | ua.dborisenko.astergazer.model.Checklist 11 | ua.dborisenko.astergazer.model.ChecklistEntry 12 | ua.dborisenko.astergazer.model.ConfigurationParameter 13 | ua.dborisenko.astergazer.model.Connection 14 | ua.dborisenko.astergazer.model.Context 15 | ua.dborisenko.astergazer.model.Extension 16 | ua.dborisenko.astergazer.model.Script 17 | ua.dborisenko.astergazer.model.block.Block 18 | ua.dborisenko.astergazer.model.block.BlockParameter 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Start.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/button_add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_FalseCase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Goto.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ContextTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class ContextTest { 19 | 20 | @PersistenceContext 21 | private EntityManager em; 22 | 23 | @Test 24 | public void mappingTest() { 25 | String expectedName = "test"; 26 | Context context = new Context(); 27 | context.setName(expectedName); 28 | Extension extension = new Extension(); 29 | extension.setContext(context); 30 | 31 | em.persist(context); 32 | em.persist(extension); 33 | em.clear(); 34 | Long id = context.getId(); 35 | Context resultContext = em.find(Context.class, id); 36 | 37 | assertThat(resultContext.getName(), is(expectedName)); 38 | assertThat(resultContext.getExtensions().size(), is(1)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/ConfigurationParameter.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import javax.persistence.Entity; 4 | import javax.persistence.EnumType; 5 | import javax.persistence.Enumerated; 6 | import javax.persistence.Id; 7 | import javax.persistence.Table; 8 | 9 | @Entity 10 | @Table(name = "configuration") 11 | public class ConfigurationParameter { 12 | 13 | public enum PARAM_NAME { 14 | FASTAGI_HOST("localhost"), 15 | MODIFICATION_STAMP(null); 16 | 17 | final private String defaultValue; 18 | 19 | PARAM_NAME(String defaultValue) { 20 | this.defaultValue = defaultValue; 21 | } 22 | 23 | public String getDefaultValue() { 24 | return defaultValue; 25 | } 26 | } 27 | 28 | public ConfigurationParameter() { 29 | } 30 | 31 | public ConfigurationParameter(PARAM_NAME name, String value) { 32 | setName(name); 33 | setValue(value); 34 | } 35 | 36 | @Id 37 | @Enumerated(EnumType.STRING) 38 | private PARAM_NAME name; 39 | 40 | private String value; 41 | 42 | public PARAM_NAME getName() { 43 | return name; 44 | } 45 | 46 | public void setName(PARAM_NAME name) { 47 | this.name = name; 48 | } 49 | 50 | public String getValue() { 51 | return value; 52 | } 53 | 54 | public void setValue(String value) { 55 | this.value = value; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/SwitchBlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | import org.junit.Test; 10 | 11 | public class SwitchBlockTest { 12 | 13 | private BlockTestUtil blockTestUtil = new BlockTestUtil(); 14 | 15 | @Test 16 | public void translateTest() { 17 | String caption = "caption"; 18 | String[] parameters = { "expression" }; 19 | StringBuilder expectedResult = new StringBuilder(Block.COMMAND_PREFIX + caption + "),NoOp(switch)\n"); 20 | SwitchBlock block = new SwitchBlock(); 21 | List trueCaseBlocks = new ArrayList<>(); 22 | for (int i = 1; i <= 100; i++) { 23 | EqualCaseBlock caseBlock = new EqualCaseBlock(); 24 | caseBlock.setLocalId(i); 25 | caseBlock.setCaption("caption" + i); 26 | trueCaseBlocks.add(caseBlock); 27 | expectedResult.append(Block.COMMAND_PREFIX).append(caption).append("_EqualCase_").append(i) 28 | .append("),GotoIf($[expression=caption").append(i).append("]?EqualCase_").append(i).append(")\n"); 29 | } 30 | blockTestUtil.setBlockParameters(block, caption, parameters); 31 | 32 | assertThat(block.translate(trueCaseBlocks), is(expectedResult.toString())); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ChecklistTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class ChecklistTest { 19 | 20 | @PersistenceContext 21 | private EntityManager em; 22 | 23 | @Test 24 | public void mappingTest() { 25 | String expectedName = "test"; 26 | Checklist checklist = new Checklist(); 27 | checklist.setName(expectedName); 28 | ChecklistEntry entry = new ChecklistEntry(); 29 | entry.setChecklist(checklist); 30 | 31 | em.persist(checklist); 32 | em.persist(entry); 33 | em.clear(); 34 | Long id = checklist.getId(); 35 | Checklist resultChecklist = em.find(Checklist.class, id); 36 | 37 | assertThat(resultChecklist.getName(), is(expectedName)); 38 | assertThat(resultChecklist.getEntries().size(), is(1)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_EqualCase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Progress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ChecklistEntryTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class ChecklistEntryTest { 19 | 20 | @PersistenceContext 21 | private EntityManager em; 22 | 23 | @Test 24 | public void mappingTest() { 25 | String expectedControlValue = "test1"; 26 | String expectedReturnValue = "test2"; 27 | ChecklistEntry entry = new ChecklistEntry(); 28 | entry.setControlValue(expectedControlValue); 29 | entry.setReturnValue(expectedReturnValue); 30 | 31 | em.persist(entry); 32 | em.clear(); 33 | long id = entry.getId(); 34 | ChecklistEntry resultEntry = em.find(ChecklistEntry.class, id); 35 | 36 | assertThat(resultEntry.getControlValue(), is(expectedControlValue)); 37 | assertThat(resultEntry.getReturnValue(), is(expectedReturnValue)); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Busy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ExtensionTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.hamcrest.CoreMatchers.notNullValue; 5 | import static org.junit.Assert.assertThat; 6 | 7 | import javax.persistence.EntityManager; 8 | import javax.persistence.PersistenceContext; 9 | 10 | import org.junit.Test; 11 | import org.junit.runner.RunWith; 12 | import org.springframework.test.context.ContextConfiguration; 13 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 14 | import org.springframework.transaction.annotation.Transactional; 15 | 16 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 17 | @RunWith(SpringJUnit4ClassRunner.class) 18 | @Transactional 19 | public class ExtensionTest { 20 | 21 | @PersistenceContext 22 | private EntityManager em; 23 | 24 | @Test 25 | public void mappingTest() { 26 | String expectedName = "test"; 27 | Extension extension = new Extension(); 28 | extension.setName(expectedName); 29 | Script script = new Script(); 30 | extension.setScript(script); 31 | 32 | em.persist(script); 33 | em.persist(extension); 34 | em.clear(); 35 | Long id = extension.getId(); 36 | Extension resultExtension = em.find(Extension.class, id); 37 | 38 | assertThat(resultExtension.getName(), is(expectedName)); 39 | assertThat(resultExtension.getScript(), is(notNullValue())); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Congestion.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_ConfBridge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_MeetMe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /astergazer/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%logger] %msg%n 16 | 17 | 18 | 19 | 20 | 21 | ${log.folder}/astergazer.log 22 | 23 | ${log.folder}/astergazer.%d{yyyy-MM-dd}.log 24 | 30 25 | 3GB 26 | 27 | 28 | 29 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%logger] %msg%n 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ConfigurationParameterTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Propagation; 14 | import org.springframework.transaction.annotation.Transactional; 15 | import ua.dborisenko.astergazer.model.ConfigurationParameter.PARAM_NAME; 16 | 17 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 18 | @RunWith(SpringJUnit4ClassRunner.class) 19 | @Transactional(propagation = Propagation.REQUIRES_NEW) 20 | public class ConfigurationParameterTest { 21 | 22 | @PersistenceContext 23 | private EntityManager em; 24 | 25 | @Test 26 | public void mappingTest() { 27 | PARAM_NAME name = PARAM_NAME.FASTAGI_HOST; 28 | String expectedValue = "test"; 29 | ConfigurationParameter parameter = new ConfigurationParameter(); 30 | parameter.setName(name); 31 | parameter.setValue(expectedValue); 32 | 33 | em.merge(parameter); 34 | ConfigurationParameter resultParameter = em.find(ConfigurationParameter.class, name); 35 | 36 | assertThat(resultParameter.getValue(), is(expectedValue)); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dto/VoiceMenuDtoFactory.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dto; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.commons.lang3.math.NumberUtils; 6 | import org.springframework.stereotype.Component; 7 | 8 | import ua.dborisenko.astergazer.model.block.Block; 9 | import ua.dborisenko.astergazer.model.block.VoiceMenuBlock; 10 | 11 | @Component 12 | public class VoiceMenuDtoFactory { 13 | 14 | public VoiceMenuDto getDto(VoiceMenuBlock block, List caseBlocks) { 15 | VoiceMenuDto dto = new VoiceMenuDto(); 16 | dto.setMenuPrompt(block.getParameters().get(0).getValue()); 17 | dto.setInvalidPrompt(block.getParameters().get(1).getValue()); 18 | dto.setTimeoutPrompt(block.getParameters().get(2).getValue()); 19 | String stringValue = block.getParameters().get(3).getValue(); 20 | if (NumberUtils.isCreatable(stringValue)) { 21 | dto.setTimeout(Integer.valueOf(stringValue)); 22 | } 23 | stringValue = block.getParameters().get(4).getValue(); 24 | if (NumberUtils.isCreatable(stringValue)) { 25 | dto.setTimeoutAttemptsCount(Integer.valueOf(stringValue)); 26 | } 27 | stringValue = block.getParameters().get(5).getValue(); 28 | if (NumberUtils.isCreatable(stringValue)) { 29 | dto.setInvalidAttemptsCount(Integer.valueOf(stringValue)); 30 | } 31 | for (Block caseBlock : caseBlocks) { 32 | dto.addCaseLabel(caseBlock.getCaption(), caseBlock.getLabel()); 33 | } 34 | return dto; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Return.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ConnectionTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.*; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class ConnectionTest { 19 | 20 | @PersistenceContext 21 | private EntityManager em; 22 | 23 | @Test 24 | public void mappingTest() { 25 | int expectedSourceId = 1; 26 | int expectedTargetId = 2; 27 | Connection connection = new Connection(); 28 | connection.setIsLocked(true); 29 | connection.setSourceBlockLocalId(expectedSourceId); 30 | connection.setTargetBlockLocalId(expectedTargetId); 31 | 32 | em.persist(connection); 33 | em.clear(); 34 | long id = connection.getId(); 35 | Connection resultConnection = em.find(Connection.class, id); 36 | 37 | assertThat(resultConnection.getIsLocked(), is(true)); 38 | assertThat(resultConnection.getSourceBlockLocalId(), is(expectedSourceId)); 39 | assertThat(resultConnection.getTargetBlockLocalId(), is(expectedTargetId)); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/context.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/button_edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_ChannelRedirect.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/ScriptTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | import ua.dborisenko.astergazer.model.block.Block; 15 | 16 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 17 | @RunWith(SpringJUnit4ClassRunner.class) 18 | @Transactional 19 | public class ScriptTest { 20 | 21 | @PersistenceContext 22 | private EntityManager em; 23 | 24 | @Test 25 | public void mappingTest() { 26 | String expectedName = "test"; 27 | Script script = new Script(); 28 | script.setName(expectedName); 29 | Block block = new Block(); 30 | block.setScript(script); 31 | Connection connection = new Connection(); 32 | connection.setScript(script); 33 | 34 | em.persist(script); 35 | em.persist(block); 36 | em.persist(connection); 37 | em.clear(); 38 | Long id = script.getId(); 39 | Script resultScript = em.find(Script.class, id); 40 | 41 | assertThat(resultScript.getName(), is(expectedName)); 42 | assertThat(resultScript.getBlocks().size(), is(1)); 43 | assertThat(resultScript.getConnections().size(), is(1)); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/css/checklists.css: -------------------------------------------------------------------------------- 1 | .div-panel-checklists { 2 | float: left; 3 | margin: 5px 5px 10px 10px; 4 | position: absolute; 5 | top: 0px; 6 | bottom: 0px; 7 | } 8 | 9 | .div-checklists-panel-header { 10 | background: rgb(245, 246, 246); /* Old browsers */ 11 | background: -moz-linear-gradient(top, rgba(245, 246, 246, 1) 0%, rgba(219, 220, 226, 1) 21%, rgba(184, 186, 198, 1) 49%, rgba(221, 223, 227, 1) 80%, rgba(245, 246, 246, 1) 100%); /* FF3.6-15 */ 12 | background: -webkit-linear-gradient(top, rgba(245, 246, 246, 1) 0%, rgba(219, 220, 226, 1) 21%, rgba(184, 186, 198, 1) 49%, rgba(221, 223, 227, 1) 80%, rgba(245, 246, 246, 1) 100%); /* Chrome10-25,Safari5.1-6 */ 13 | background: linear-gradient(to bottom, rgba(245, 246, 246, 1) 0%, rgba(219, 220, 226, 1) 21%, rgba(184, 186, 198, 1) 49%, rgba(221, 223, 227, 1) 80%, rgba(245, 246, 246, 1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ 14 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f6f6', endColorstr='#f5f6f6', GradientType=0); /* IE6-9 */ 15 | border: 1px solid #aaa; 16 | padding: 6px; 17 | width: 768px; 18 | box-shadow: 3px 3px 10px -5px #000000 19 | } 20 | 21 | .div-checklists-panel-caption { 22 | height: 20px; 23 | text-align: center; 24 | font-weight: bold; 25 | } 26 | 27 | .div-checklists-tree-subwrapper { 28 | position: absolute; 29 | top: 65px; 30 | bottom: 0px; 31 | border: 1px solid #aaa; 32 | box-shadow: 3px 3px 10px -5px #000000; 33 | background-color: #fff; 34 | } 35 | 36 | .button-add-checklist { 37 | background: url("../images/button_add_checklist.svg") !important; 38 | } 39 | 40 | .button-add-checklist-entry { 41 | background: url("../images/button_add_checklist_entry.svg") !important; 42 | } 43 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_StopMusicOnHold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/button_delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_StartMusicOnHold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_ChanSpy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/block/VoiceMenuBlock.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import java.io.UnsupportedEncodingException; 4 | import java.net.URLEncoder; 5 | 6 | import java.util.List; 7 | 8 | import javax.persistence.DiscriminatorValue; 9 | import javax.persistence.Entity; 10 | 11 | import com.fasterxml.jackson.core.JsonProcessingException; 12 | import com.fasterxml.jackson.databind.ObjectMapper; 13 | 14 | import ua.dborisenko.astergazer.dto.VoiceMenuDto; 15 | import ua.dborisenko.astergazer.dto.VoiceMenuDtoFactory; 16 | 17 | @Entity 18 | @DiscriminatorValue("VoiceMenu") 19 | public class VoiceMenuBlock extends Block { 20 | 21 | public VoiceMenuBlock() { 22 | this.isSwitcher = true; 23 | this.isAgiComplexBlock = true; 24 | } 25 | 26 | @Override 27 | public String translate(List trueCaseBlocks, String fastAgiHost) { 28 | String encodedMenu; 29 | try { 30 | VoiceMenuDtoFactory dtoFactory = new VoiceMenuDtoFactory(); 31 | VoiceMenuDto dto = dtoFactory.getDto(this, trueCaseBlocks); 32 | ObjectMapper mapper = new ObjectMapper(); 33 | String menuJson = mapper.writeValueAsString(dto); 34 | encodedMenu = URLEncoder.encode(menuJson, "UTF-8"); 35 | } catch (JsonProcessingException | UnsupportedEncodingException e) { 36 | throw new IllegalArgumentException("Could not build the voice menu", e); 37 | } 38 | String implodedParameters = "agi://" + 39 | fastAgiHost + 40 | ":4573/voicemenu.agi?encodedMenu=" + 41 | encodedMenu; 42 | return buildCommandString(getLabel(), "AGI", implodedParameters); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/WEB-INF/jsp/configuration.jsp: -------------------------------------------------------------------------------- 1 | <%@page pageEncoding="UTF-8" %> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 3 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
    17 |
  • ">
  • 18 |
  • "> 19 |
  • 20 |
21 |
22 |
23 |
    24 |
  • 25 |
26 |
27 |
28 |
29 |
30 | 31 | 32 |
33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Gosub.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/js/messageDialog.js: -------------------------------------------------------------------------------- 1 | function initMessageDialog() { 2 | $("#dialog-message").dialog({ 3 | autoOpen: false, 4 | modal: true, 5 | buttons: { 6 | "OK": function () { 7 | $(this).dialog("close"); 8 | }, 9 | } 10 | }); 11 | } 12 | 13 | function showErrorMessage(text) { 14 | $("#dialog-message") 15 | .empty() 16 | .append(text) 17 | .dialog("option", "title", errorText) 18 | .dialog({ 19 | dialogClass: "dialog-error", 20 | width: 400 21 | }) 22 | .dialog("open"); 23 | } 24 | 25 | function showWarningMessage(text) { 26 | $("#dialog-message") 27 | .empty() 28 | .append(text) 29 | .dialog("option", "title", warningText) 30 | .dialog({dialogClass: "dialog-warning"}) 31 | .dialog("open"); 32 | } 33 | 34 | function showInformationMessage(text) { 35 | $("#dialog-message") 36 | .empty() 37 | .append(text) 38 | .dialog("option", "title", informationText) 39 | .dialog({dialogClass: ""}) 40 | .dialog("open"); 41 | } 42 | 43 | function showConfirmation(text, onOkFunction) { 44 | var dialogButtons = {}; 45 | dialogButtons["OK"] = function () { 46 | onOkFunction(); 47 | $(this).dialog("close"); 48 | }; 49 | dialogButtons[cancelText] = function () { 50 | $(this).dialog("close"); 51 | }; 52 | var dialog = $("#dialog-confirmation").dialog({ 53 | autoOpen: false, 54 | modal: true, 55 | buttons: dialogButtons 56 | }); 57 | dialog.empty() 58 | .append(text) 59 | .dialog("option", "title", confirmationText) 60 | .dialog("open"); 61 | } 62 | 63 | 64 | $(document).ready(function () { 65 | initMessageDialog(); 66 | }); -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/dao/impl/ConfigurationDao.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.dao.impl; 2 | 3 | import java.util.List; 4 | 5 | import javax.persistence.EntityManager; 6 | import javax.persistence.PersistenceContext; 7 | 8 | import org.springframework.stereotype.Repository; 9 | 10 | import ua.dborisenko.astergazer.dao.IConfigurationDao; 11 | import ua.dborisenko.astergazer.model.ConfigurationParameter; 12 | import ua.dborisenko.astergazer.model.ConfigurationParameter.PARAM_NAME; 13 | import ua.dborisenko.astergazer.exception.DaoException; 14 | 15 | @Repository 16 | public class ConfigurationDao implements IConfigurationDao { 17 | 18 | @PersistenceContext 19 | private EntityManager em; 20 | 21 | @Override 22 | @SuppressWarnings("unchecked") 23 | public List getAll() throws DaoException { 24 | try { 25 | return (List) em.createQuery("FROM ConfigurationParameter").getResultList(); 26 | } catch (Exception e) { 27 | throw new DaoException("Could not get all parameters", e); 28 | } 29 | } 30 | 31 | @Override 32 | public ConfigurationParameter get(PARAM_NAME name) throws DaoException { 33 | try { 34 | return em.find(ConfigurationParameter.class, name); 35 | } catch (Exception e) { 36 | throw new DaoException("Could not get parameter with name " + name, e); 37 | } 38 | } 39 | 40 | @Override 41 | public void set(ConfigurationParameter parameter) throws DaoException { 42 | try { 43 | em.merge(parameter); 44 | } catch (Exception e) { 45 | throw new DaoException("Could not set parameter", e); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /astergazer/src/test/java/ua/dborisenko/astergazer/model/block/BlockTest.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model.block; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertThat; 5 | 6 | import javax.persistence.EntityManager; 7 | import javax.persistence.PersistenceContext; 8 | 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.springframework.test.context.ContextConfiguration; 12 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | @ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 16 | @RunWith(SpringJUnit4ClassRunner.class) 17 | @Transactional 18 | public class BlockTest { 19 | @PersistenceContext 20 | private EntityManager em; 21 | 22 | @Test 23 | public void mappingTest() { 24 | Block block = new Block(); 25 | block.setCaption("testCaption"); 26 | block.setIsLocked(true); 27 | block.setLocalId(1); 28 | block.setPosX(10); 29 | block.setPosY(20); 30 | block.setType("testType"); 31 | BlockParameter parameter = new BlockParameter(); 32 | parameter.setBlock(block); 33 | 34 | em.persist(block); 35 | em.persist(parameter); 36 | em.clear(); 37 | long id = block.getId(); 38 | Block resultBlock = em.find(Block.class, id); 39 | 40 | assertThat(resultBlock.getCaption(), is("testCaption")); 41 | assertThat(resultBlock.getIsLocked(), is(true)); 42 | assertThat(resultBlock.getPosX(), is(10)); 43 | assertThat(resultBlock.getPosY(), is(20)); 44 | assertThat(resultBlock.getParameters().size(), is(1)); 45 | 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/button_add_extension.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Answer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Hangup.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Pickup.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/model/Checklist.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.model; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import javax.persistence.CascadeType; 7 | import javax.persistence.Entity; 8 | import javax.persistence.GeneratedValue; 9 | import javax.persistence.GenerationType; 10 | import javax.persistence.Id; 11 | import javax.persistence.NamedQueries; 12 | import javax.persistence.NamedQuery; 13 | import javax.persistence.OneToMany; 14 | import javax.persistence.Table; 15 | 16 | @Entity 17 | @Table(name = "dlp_checklist") 18 | @NamedQueries(value = { 19 | @NamedQuery(name = "Checklist.getByName", query = "SELECT c FROM Checklist c WHERE c.name = :name"), 20 | @NamedQuery(name = "Checklist.getAll", query = "SELECT c FROM Checklist c order by c.name"), 21 | @NamedQuery(name = "Checklist.getCount", query = "SELECT count(c) FROM Checklist c WHERE c.name = :name and c.id <> :id") }) 22 | public class Checklist { 23 | 24 | @Id 25 | @GeneratedValue(strategy = GenerationType.IDENTITY) 26 | private Long id; 27 | 28 | private String name; 29 | 30 | @OneToMany(mappedBy = "checklist", cascade = CascadeType.ALL, orphanRemoval = true) 31 | private List entries = new ArrayList<>(); 32 | 33 | public Long getId() { 34 | return id; 35 | } 36 | 37 | public void setId(Long id) { 38 | this.id = id; 39 | } 40 | 41 | public String getName() { 42 | return name; 43 | } 44 | 45 | public void setName(String name) { 46 | this.name = name; 47 | } 48 | 49 | public List getEntries() { 50 | return entries; 51 | } 52 | 53 | public void setEntries(List entries) { 54 | this.entries = entries; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /astergazer/src/main/java/ua/dborisenko/astergazer/service/impl/BlockService.java: -------------------------------------------------------------------------------- 1 | package ua.dborisenko.astergazer.service.impl; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Service; 5 | import org.springframework.transaction.CannotCreateTransactionException; 6 | import org.springframework.transaction.annotation.Transactional; 7 | 8 | import ua.dborisenko.astergazer.dao.IBlockDao; 9 | import ua.dborisenko.astergazer.model.Script; 10 | import ua.dborisenko.astergazer.model.block.Block; 11 | import ua.dborisenko.astergazer.model.block.StartBlock; 12 | import ua.dborisenko.astergazer.exception.DaoException; 13 | import ua.dborisenko.astergazer.exception.ServiceException; 14 | import ua.dborisenko.astergazer.service.IBlockService; 15 | 16 | @Service 17 | @Transactional(rollbackFor = Exception.class) 18 | public class BlockService implements IBlockService { 19 | 20 | private static final int START_BLOCK_INIT_POSITION_X = 20; 21 | private static final int START_BLOCK_INIT_POSITION_Y = 20; 22 | 23 | @Autowired 24 | private IBlockDao blockDao; 25 | 26 | @Override 27 | public void addStartBlockToScript(Script script) throws ServiceException { 28 | Block startBlock = new StartBlock(); 29 | startBlock.setType("Start"); 30 | startBlock.setCaption("Start"); 31 | startBlock.setPosX(START_BLOCK_INIT_POSITION_X); 32 | startBlock.setPosY(START_BLOCK_INIT_POSITION_Y); 33 | startBlock.setIsLocked(true); 34 | startBlock.setLocalId(1); 35 | startBlock.setScript(script); 36 | try { 37 | blockDao.add(startBlock); 38 | } catch (CannotCreateTransactionException | DaoException e) { 39 | throw new ServiceException("Could not add the 'Start' block", e); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_MusicOnHold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/button_add_context.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /astergazer/src/main/webapp/images/block_Checklist.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | --------------------------------------------------------------------------------