├── .gitignore ├── README.md ├── client ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── taobao │ └── zeus │ ├── client │ ├── ZeusException.java │ ├── crud │ │ ├── ZeusGroupService.java │ │ └── ZeusJobService.java │ └── operate │ │ ├── ZeusHelperService.java │ │ ├── ZeusInvokeService.java │ │ └── ZeusJobOperateService.java │ ├── model │ ├── DebugHistory.java │ ├── FileDescriptor.java │ ├── GroupDescriptor.java │ ├── JobDescriptor.java │ ├── JobHistory.java │ ├── JobStatus.java │ ├── LogContent.java │ ├── Profile.java │ ├── ZeusFollow.java │ └── processer │ │ ├── DownloadProcesser.java │ │ ├── HiveProcesser.java │ │ ├── JobProcesser.java │ │ ├── MailProcesser.java │ │ ├── MetaProcesser.java │ │ ├── OutputCheckProcesser.java │ │ ├── OutputCleanProcesser.java │ │ ├── Processer.java │ │ ├── WangWangProcesser.java │ │ └── ZooKeeperProcesser.java │ └── util │ ├── DateUtil.java │ └── ZeusStringUtil.java ├── deploy ├── .settings │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ └── main │ └── assembly │ └── assembly.xml ├── license.txt ├── pom.xml ├── schedule ├── pom.xml └── src │ └── main │ └── java │ ├── SocketProtocol.proto │ ├── com │ └── taobao │ │ └── zeus │ │ ├── broadcast │ │ ├── alarm │ │ │ ├── AbstractZeusAlarm.java │ │ │ ├── MailAlarm.java │ │ │ ├── SMSAlarm.java │ │ │ └── ZeusAlarm.java │ │ └── notify │ │ │ ├── AbstractJobResultNotify.java │ │ │ ├── JobResultNotify.java │ │ │ └── ZKResultNotify.java │ │ ├── jobs │ │ ├── AbstractJob.java │ │ ├── Job.java │ │ ├── JobContext.java │ │ ├── ProcessJob.java │ │ ├── RenderHierarchyProperties.java │ │ ├── WithProcesserJob.java │ │ └── sub │ │ │ ├── HadoopShellJob.java │ │ │ ├── HiveJob.java │ │ │ ├── JavaJob.java │ │ │ ├── MapReduceJob.java │ │ │ ├── ShellJob.java │ │ │ ├── conf │ │ │ ├── ConfUtil.java │ │ │ ├── DailyConf.java │ │ │ └── OnlineConf.java │ │ │ ├── main │ │ │ └── MapReduceMain.java │ │ │ └── tool │ │ │ ├── CancelHadoopJob.java │ │ │ ├── CopyLocalFileJob.java │ │ │ ├── DataPreviewJob.java │ │ │ ├── DownloadHdfsFileJob.java │ │ │ ├── DownloadJob.java │ │ │ ├── HiveOutputCheckJob.java │ │ │ ├── HivePartitionCleanJob.java │ │ │ ├── HiveProcesserJob.java │ │ │ ├── MailJob.java │ │ │ ├── MavenDownloadJob.java │ │ │ ├── MemUseRateJob.java │ │ │ ├── OutputCheckJob.java │ │ │ ├── OutputCleanJob.java │ │ │ ├── UploadHdfsFileJob.java │ │ │ ├── WangWangJob.java │ │ │ └── ZooKeeperJob.java │ │ ├── mvc │ │ ├── AppEvent.java │ │ ├── BaseEvent.java │ │ ├── BaseObservable.java │ │ ├── Controller.java │ │ ├── Dispatcher.java │ │ ├── DispatcherListener.java │ │ ├── EventType.java │ │ ├── Listener.java │ │ ├── MvcEvent.java │ │ ├── Observable.java │ │ └── View.java │ │ ├── schedule │ │ ├── DistributeLocker.java │ │ ├── ZeusSchedule.java │ │ ├── hsf │ │ │ └── CacheJobDescriptor.java │ │ └── mvc │ │ │ ├── AddJobListener.java │ │ │ ├── DebugInfoLog.java │ │ │ ├── DebugListener.java │ │ │ ├── JobController.java │ │ │ ├── JobFailListener.java │ │ │ ├── JobSuccessListener.java │ │ │ ├── ScheduleInfoLog.java │ │ │ ├── StopScheduleJobListener.java │ │ │ ├── ZeusJobException.java │ │ │ └── event │ │ │ ├── DebugFailEvent.java │ │ │ ├── DebugSuccessEvent.java │ │ │ ├── Events.java │ │ │ ├── JobCancelEvent.java │ │ │ ├── JobFailedEvent.java │ │ │ ├── JobMaintenanceEvent.java │ │ │ ├── JobSuccessEvent.java │ │ │ └── ScheduleTriggerEvent.java │ │ ├── socket │ │ ├── SocketLog.java │ │ ├── master │ │ │ ├── AtomicIncrease.java │ │ │ ├── JobElement.java │ │ │ ├── Master.java │ │ │ ├── MasterContext.java │ │ │ ├── MasterHandler.java │ │ │ ├── MasterServer.java │ │ │ ├── MasterWorkerHolder.java │ │ │ └── reqresp │ │ │ │ ├── MasterBeHeartBeat.java │ │ │ │ ├── MasterBeUpdate.java │ │ │ │ ├── MasterBeWebCancel.java │ │ │ │ ├── MasterBeWebDebug.java │ │ │ │ ├── MasterBeWebExecute.java │ │ │ │ ├── MasterCancelJob.java │ │ │ │ └── MasterExecuteJob.java │ │ ├── protocol │ │ │ └── Protocol.java │ │ └── worker │ │ │ ├── ClientWorker.java │ │ │ ├── WorkerContext.java │ │ │ ├── WorkerHandler.java │ │ │ └── reqresp │ │ │ ├── WorkerBeCancel.java │ │ │ ├── WorkerBeExecute.java │ │ │ ├── WorkerHeartBeat.java │ │ │ ├── WorkerWebCancel.java │ │ │ ├── WorkerWebExecute.java │ │ │ └── WorkerWebUpdate.java │ │ ├── store │ │ ├── CliTableManager.java │ │ ├── DebugHistoryManager.java │ │ ├── FileBean.java │ │ ├── FileManager.java │ │ ├── FollowManager.java │ │ ├── GroupBean.java │ │ ├── GroupManager.java │ │ ├── GroupManagerTool.java │ │ ├── HDFSManager.java │ │ ├── HierarchyProperties.java │ │ ├── JobBean.java │ │ ├── JobHistoryManager.java │ │ ├── PermissionManager.java │ │ ├── ProfileManager.java │ │ ├── Super.java │ │ ├── TableManager.java │ │ ├── UserManager.java │ │ └── mysql │ │ │ ├── CacheMysqlGroupManager.java │ │ │ ├── MysqlDebugHistoryManager.java │ │ │ ├── MysqlFileManager.java │ │ │ ├── MysqlFollowManager.java │ │ │ ├── MysqlGroupManager.java │ │ │ ├── MysqlJobHistoryManager.java │ │ │ ├── MysqlPermissionManager.java │ │ │ ├── MysqlProfileManager.java │ │ │ ├── MysqlReportManager.java │ │ │ ├── MysqlUserManager.java │ │ │ ├── ReadOnlyGroupManager.java │ │ │ ├── persistence │ │ │ ├── DebugHistoryPersistence.java │ │ │ ├── DistributeLock.java │ │ │ ├── FilePersistence.java │ │ │ ├── GroupPersistence.java │ │ │ ├── JobHistoryPersistence.java │ │ │ ├── JobPersistence.java │ │ │ ├── PermissionPersistence.java │ │ │ ├── ProfilePersistence.java │ │ │ ├── TimeZone.java │ │ │ ├── Worker.java │ │ │ ├── ZeusFollowPersistence.java │ │ │ └── ZeusUser.java │ │ │ └── tool │ │ │ ├── GroupValidate.java │ │ │ ├── JobValidate.java │ │ │ ├── Judge.java │ │ │ ├── PersistenceAndBeanConvert.java │ │ │ └── ProcesserUtil.java │ │ └── util │ │ ├── Environment.java │ │ ├── ExitCodes.java │ │ ├── JobUtils.java │ │ ├── PropertyKeys.java │ │ ├── RunningJobKeys.java │ │ ├── Tuple.java │ │ └── ZeusDateTool.java │ ├── protobuf.bat │ └── protoc.exe └── web ├── libs └── highcharts-1.4.0.jar ├── pom.xml └── src └── main ├── filter └── antx.properties ├── java └── com │ └── taobao │ └── zeus │ └── web │ ├── FileUploadServlet.java │ ├── LoginFilter.java │ ├── LoginUser.java │ ├── PartitionDownloadServlet.java │ ├── PermissionGroupManager.java │ ├── RpcFilter.java │ ├── ScheduleDump.java │ ├── ScheduleGroupManager.java │ ├── YuntiJobDetailServlet.java │ └── platform │ ├── Platform.gwt.xml │ ├── client │ ├── PlatformEntry.java │ ├── app │ │ ├── Application.java │ │ ├── PlacePath.java │ │ ├── PlatformPlace.java │ │ ├── document │ │ │ ├── DocumentApp.java │ │ │ ├── DocumentPresenter.java │ │ │ ├── DocumentPresenterImpl.java │ │ │ ├── DocumentShortcut.java │ │ │ ├── DocumentView.java │ │ │ └── DocumentViewImpl.java │ │ ├── home │ │ │ ├── HomeApp.java │ │ │ ├── HomeShortcut.java │ │ │ └── HomeWidget.java │ │ ├── report │ │ │ ├── ReportApp.java │ │ │ ├── ReportPresenter.java │ │ │ ├── ReportPresenterImpl.java │ │ │ ├── ReportShortcut.java │ │ │ ├── ReportView.java │ │ │ ├── ReportViewImpl.java │ │ │ └── chart │ │ │ │ ├── OwnerJobTrend.java │ │ │ │ └── RunningJobTrend.java │ │ └── schedule │ │ │ ├── ScheduleApp.java │ │ │ ├── SchedulePresenter.java │ │ │ ├── SchedulePresenterImpl.java │ │ │ ├── ScheduleShortcut.java │ │ │ ├── ScheduleView.java │ │ │ └── ScheduleViewImpl.java │ ├── lib │ │ ├── codemirror │ │ │ ├── CodeMirror.css │ │ │ ├── CodeMirror.java │ │ │ └── CodeMirrors.java │ │ └── jit │ │ │ └── SpaceTree.java │ ├── module │ │ ├── filemanager │ │ │ ├── AsyncTreeGridDropTarget.java │ │ │ ├── FileManagerGridInlineEditing.java │ │ │ ├── FileManagerPresenter.java │ │ │ ├── FileManagerPresenterImpl.java │ │ │ ├── FileManagerView.java │ │ │ ├── FileManagerViewImpl.java │ │ │ ├── FileManagerViewImpl.ui.xml │ │ │ ├── FileMenu.java │ │ │ ├── FileModel.java │ │ │ ├── FileModelFactory.java │ │ │ ├── FileModelProperties.java │ │ │ ├── FileTreeGrid.java │ │ │ ├── LimitedTreeGridDragSource.java │ │ │ ├── OpenFileEvent.java │ │ │ └── images │ │ │ │ ├── Images.java │ │ │ │ ├── arrow_in.png │ │ │ │ ├── arrow_out.png │ │ │ │ ├── bullet_go.png │ │ │ │ ├── cross.png │ │ │ │ ├── folder_add.png │ │ │ │ ├── page_white.png │ │ │ │ ├── page_white_add.png │ │ │ │ ├── script.png │ │ │ │ ├── script_add.png │ │ │ │ └── textfield_rename.png │ │ ├── guide │ │ │ └── GuideTip.java │ │ ├── jobdisplay │ │ │ ├── AdminConfigWindow.java │ │ │ ├── CenterTemplate.java │ │ │ ├── FormatUtil.java │ │ │ ├── JobDisplayPresenter.java │ │ │ ├── JobDisplayPresenterImpl.java │ │ │ ├── JobDisplayView.java │ │ │ ├── JobDisplayViewImpl.java │ │ │ ├── group │ │ │ │ ├── CardAddGroup.java │ │ │ │ ├── CardEditGroup.java │ │ │ │ ├── CardInfo.java │ │ │ │ ├── CardManual.java │ │ │ │ ├── CardOverall.java │ │ │ │ ├── CardRunning.java │ │ │ │ ├── GroupPresenter.java │ │ │ │ ├── GroupProperties.java │ │ │ │ ├── GroupView.java │ │ │ │ ├── NewGroupWindow.java │ │ │ │ └── NewJobWindow.java │ │ │ └── job │ │ │ │ ├── CardDepGraph.java │ │ │ │ ├── CardEditJob.java │ │ │ │ ├── CardHistory.java │ │ │ │ ├── CardInfo.java │ │ │ │ ├── FileUploadWidget.java │ │ │ │ ├── JobHistoryModel.java │ │ │ │ ├── JobHistoryProperties.java │ │ │ │ ├── JobPresenter.java │ │ │ │ ├── JobView.java │ │ │ │ ├── ProcesserType.java │ │ │ │ └── processer │ │ │ │ ├── JobProcesserWindow.txt │ │ │ │ └── ZKProcesserWindow.java │ │ ├── jobmanager │ │ │ ├── CheckableJobTree.java │ │ │ ├── GroupJobTreeModel.java │ │ │ ├── GroupModel.java │ │ │ ├── JobManagerPresenter.java │ │ │ ├── JobManagerPresenterImpl.java │ │ │ ├── JobManagerView.java │ │ │ ├── JobManagerViewImpl.java │ │ │ ├── JobModel.java │ │ │ ├── JobModelProperties.java │ │ │ ├── JobTree.java │ │ │ ├── TreeKeyProviderTool.java │ │ │ ├── event │ │ │ │ ├── TreeNodeChangeEvent.java │ │ │ │ └── TreeNodeSelectEvent.java │ │ │ └── images │ │ │ │ ├── Images.java │ │ │ │ ├── folder_group.gif │ │ │ │ ├── job.gif │ │ │ │ └── leaf_group.gif │ │ ├── profile │ │ │ ├── ProfileModel.java │ │ │ └── QuickHadoopConfig.java │ │ ├── tablemanager │ │ │ ├── TableManagerPresenter.java │ │ │ ├── TableManagerPresenterImpl.java │ │ │ ├── TableManagerView.java │ │ │ ├── TableManagerViewImpl.java │ │ │ ├── TableManagerViewImpl.ui.xml │ │ │ ├── TablePreviewModel.java │ │ │ ├── component │ │ │ │ ├── ColumnInfoTab.java │ │ │ │ ├── DataPreviewGrid.java │ │ │ │ ├── PartitionTab.java │ │ │ │ ├── TableInfoPanel.java │ │ │ │ ├── TableInfoTab.java │ │ │ │ └── Tuple.java │ │ │ └── model │ │ │ │ ├── PartitionModel.java │ │ │ │ ├── PartitionModelProperties.java │ │ │ │ ├── TableColumnModel.java │ │ │ │ ├── TableColumnModelProperties.java │ │ │ │ ├── TableModel.java │ │ │ │ └── TableModelProperties.java │ │ └── word │ │ │ ├── DataxWidget.java │ │ │ ├── HiveWord.java │ │ │ ├── ShellWord.java │ │ │ ├── TextWord.java │ │ │ ├── Word.java │ │ │ ├── WordPresenter.java │ │ │ ├── WordPresenterImpl.java │ │ │ ├── WordView.java │ │ │ ├── WordViewImpl.java │ │ │ ├── component │ │ │ ├── EditTab.java │ │ │ ├── HistoryTab.java │ │ │ ├── LogTabPanel.java │ │ │ ├── LogTextPanel.java │ │ │ └── ViewTab.java │ │ │ ├── images │ │ │ ├── Images.java │ │ │ ├── download.png │ │ │ ├── processingIcon.gif │ │ │ ├── traffic_green.origin.png │ │ │ ├── traffic_green.png │ │ │ ├── traffic_red.origin.png │ │ │ └── traffic_red.png │ │ │ ├── model │ │ │ ├── DebugHistoryModel.java │ │ │ └── DebugHistoryProperties.java │ │ │ └── toolbar │ │ │ ├── AbstractToolBar.java │ │ │ ├── HiveToolBar.java │ │ │ ├── ShellToolBar.java │ │ │ └── ToolBarContainer.java │ ├── theme │ │ ├── ResourcesTool.java │ │ ├── image │ │ │ ├── IconResources.java │ │ │ ├── document.gif │ │ │ ├── home.gif │ │ │ ├── icon_config.png │ │ │ ├── icon_extends.gif │ │ │ ├── icon_jump.png │ │ │ ├── icon_run.png │ │ │ ├── icon_sync.png │ │ │ ├── icon_upload.png │ │ │ ├── report.jpg │ │ │ ├── schedule.jpg │ │ │ └── terminal.jpg │ │ └── shortcut │ │ │ ├── ShortcutCell.css │ │ │ ├── ShortcutCellDefaultAppearance.java │ │ │ ├── ShortcutTableFrame.css │ │ │ ├── ShortcutTableFrameResources.java │ │ │ ├── background.gif │ │ │ ├── backgroundOverBorder.gif │ │ │ ├── backgroundPressedBorder.gif │ │ │ ├── bottomBorder.gif │ │ │ ├── bottomLeftBorder.gif │ │ │ ├── bottomLeftOverBorder.gif │ │ │ ├── bottomLeftPressedBorder.gif │ │ │ ├── bottomOverBorder.gif │ │ │ ├── bottomPressedBorder.gif │ │ │ ├── bottomRightBorder.gif │ │ │ ├── bottomRightOverBorder.gif │ │ │ ├── bottomRightPressedBorder.gif │ │ │ ├── leftBorder.gif │ │ │ ├── leftOverBorder.gif │ │ │ ├── leftPressedBorder.gif │ │ │ ├── rightBorder.gif │ │ │ ├── rightOverBorder.gif │ │ │ ├── rightPressedBorder.gif │ │ │ ├── topBorder.gif │ │ │ ├── topLeftBorder.gif │ │ │ ├── topLeftOverBorder.gif │ │ │ ├── topLeftPressedBorder.gif │ │ │ ├── topOverBorder.gif │ │ │ ├── topPressedBorder.gif │ │ │ ├── topRightBorder.gif │ │ │ ├── topRightOverBorder.gif │ │ │ └── topRightPressedBorder.gif │ ├── util │ │ ├── Callback.java │ │ ├── GWTEnvironment.java │ │ ├── GwtException.java │ │ ├── PlatformBus.java │ │ ├── PlatformContext.java │ │ ├── Presenter.java │ │ ├── RPCS.java │ │ ├── Refreshable.java │ │ ├── StartEvent.java │ │ ├── StringUtil.java │ │ ├── ToolUtil.java │ │ ├── ZUser.java │ │ ├── async │ │ │ ├── AbstractAsyncCallback.java │ │ │ ├── CallbackUtils.java │ │ │ └── PlatformAsyncCallback.java │ │ ├── filesystem │ │ │ ├── FSUtil.java │ │ │ ├── FileSystem.java │ │ │ └── FileUpdateEvent.java │ │ ├── place │ │ │ ├── PlaceHandler.java │ │ │ └── PlatformPlaceChangeEvent.java │ │ └── template │ │ │ ├── TemplateResources.java │ │ │ ├── home.html │ │ │ └── notice.html │ └── widget │ │ ├── MyRowExpander.java │ │ ├── MyStringFilter.java │ │ ├── Platform.java │ │ ├── Platform.ui.xml │ │ ├── Shortcut.java │ │ ├── ShortcutCell.java │ │ └── TitledCell.java │ ├── server │ └── rpc │ │ ├── FileManagerRpcImpl.java │ │ ├── FilterJobServiceImpl.java │ │ ├── GroupServiceImpl.java │ │ ├── JobDebugRpcImpl.java │ │ ├── JobServiceImpl.java │ │ ├── ProfileManagerRpcImpl.java │ │ ├── ReportRpcImpl.java │ │ ├── TableManagerRpcImpl.java │ │ ├── TreeServiceImpl.java │ │ └── UserServiceImpl.java │ └── shared │ └── rpc │ ├── FileClientBean.java │ ├── FileManagerService.java │ ├── FileManagerServiceAsync.java │ ├── GroupService.java │ ├── GroupServiceAsync.java │ ├── JobDebugService.java │ ├── JobDebugServiceAsync.java │ ├── JobService.java │ ├── JobServiceAsync.java │ ├── ProfileManagerService.java │ ├── ProfileManagerServiceAsync.java │ ├── ReportService.java │ ├── ReportServiceAsync.java │ ├── TableManagerService.java │ ├── TableManagerServiceAsync.java │ ├── TreeService.java │ ├── TreeServiceAsync.java │ ├── UserService.java │ └── UserServiceAsync.java ├── resources ├── ARKConfig.properties ├── antx.properties ├── applicationContext.xml ├── broadcast-applicationContext.xml ├── log4j.xml └── persistence.xml └── webapp ├── MONACO.TTF ├── WEB-INF ├── jboss-web.xml └── web.xml ├── codemirror ├── codemirror.css ├── codemirror.js ├── css │ ├── css.js │ └── index.html ├── htmlembedded │ ├── htmlembedded.js │ └── index.html ├── htmlmixed │ ├── htmlmixed.js │ └── index.html ├── javascript │ ├── index.html │ └── javascript.js ├── mysql │ ├── index.html │ └── mysql.js ├── shell │ ├── index.html │ └── shell.js ├── theme │ ├── ambiance.css │ ├── blackboard.css │ ├── cobalt.css │ ├── eclipse.css │ ├── elegant.css │ ├── erlang-dark.css │ ├── lesser-dark.css │ ├── monokai.css │ ├── neat.css │ ├── night.css │ ├── rubyblue.css │ ├── vibrant-ink.css │ └── xq-dark.css ├── util │ ├── closetag.js │ ├── dialog.css │ ├── dialog.js │ ├── foldcode.js │ ├── formatting.js │ ├── javascript-hint.js │ ├── loadmode.js │ ├── match-highlighter.js │ ├── multiplex.js │ ├── overlay.js │ ├── pig-hint.js │ ├── runmode.js │ ├── search.js │ ├── searchcursor.js │ ├── simple-hint.css │ ├── simple-hint.js │ └── xml-hint.js └── xml │ ├── index.html │ └── xml.js ├── favicon.ico ├── highcharts ├── highcharts.js └── jQuery-1.4.2.js ├── jit ├── DependenceTree.js ├── Spacetree.css ├── base.css └── jit.js ├── platform.css ├── platform.html └── syntaxhighlighter ├── compass ├── _theme_template.scss ├── config.rb ├── shCore.scss ├── shCoreDefault.scss ├── shCoreDjango.scss ├── shCoreEclipse.scss ├── shCoreEmacs.scss ├── shCoreFadeToGrey.scss ├── shCoreMDUltra.scss ├── shCoreMidnight.scss ├── shCoreRDark.scss ├── shThemeDefault.scss ├── shThemeDjango.scss ├── shThemeEclipse.scss ├── shThemeEmacs.scss ├── shThemeFadeToGrey.scss ├── shThemeMDUltra.scss ├── shThemeMidnight.scss └── shThemeRDark.scss ├── scripts ├── shAutoloader.js ├── shBrushAS3.js ├── shBrushAppleScript.js ├── shBrushBash.js ├── shBrushCSharp.js ├── shBrushColdFusion.js ├── shBrushCpp.js ├── shBrushCss.js ├── shBrushDelphi.js ├── shBrushDiff.js ├── shBrushErlang.js ├── shBrushGroovy.js ├── shBrushJScript.js ├── shBrushJava.js ├── shBrushJavaFX.js ├── shBrushPerl.js ├── shBrushPhp.js ├── shBrushPlain.js ├── shBrushPowerShell.js ├── shBrushPython.js ├── shBrushRuby.js ├── shBrushSass.js ├── shBrushScala.js ├── shBrushSql.js ├── shBrushVb.js ├── shBrushXml.js ├── shCore.js └── shLegacy.js └── styles ├── shCore.css ├── shCoreDefault.css ├── shCoreDjango.css ├── shCoreEclipse.css ├── shCoreEmacs.css ├── shCoreFadeToGrey.css ├── shCoreMDUltra.css ├── shCoreMidnight.css ├── shCoreRDark.css ├── shThemeDefault.css ├── shThemeDjango.css ├── shThemeEclipse.css ├── shThemeEmacs.css ├── shThemeFadeToGrey.css ├── shThemeMDUltra.css ├── shThemeMidnight.css └── shThemeRDark.css /.gitignore: -------------------------------------------------------------------------------- 1 | deploy/target 2 | deploy/.project 3 | client/target 4 | client/.classpath 5 | client/.project 6 | client/.settings 7 | schedule/target 8 | schedule/bin 9 | schedule/.classpath 10 | schedule/.project 11 | schedule/.settings 12 | web/bin 13 | web/target 14 | web/.classpath 15 | web/.project 16 | web/.settings 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Zeus维护者:杨飞 2 | 3 | ##宙斯(zeus)是什么 4 | 宙斯是一个完整的Hadoop的作业平台 5 | 从Hadoop任务的调试运行到生产任务的周期调度 6 | 宙斯支持任务的整个生命周期 7 | 8 | 从功能上来说,支持: 9 | Hadoop MapReduce任务的调试运行 10 | Hive任务的调试运行 11 | Shell任务的运行 12 | Hive元数据的可视化查询与数据预览 13 | Hadoop任务的自动调度 14 | 15 | 16 | QQ交流群:336733312 17 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/ZeusException.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client; 2 | 3 | public class ZeusException extends Exception { 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 1L; 9 | 10 | public ZeusException(){ 11 | super(); 12 | } 13 | 14 | public ZeusException(String message){ 15 | super(message); 16 | } 17 | 18 | public ZeusException(Throwable e){ 19 | super(e); 20 | } 21 | 22 | public ZeusException(String msg,Throwable e){ 23 | super(msg, e); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/crud/ZeusGroupService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client.crud; 2 | 3 | import com.taobao.zeus.client.ZeusException; 4 | import com.taobao.zeus.model.GroupDescriptor; 5 | 6 | public interface ZeusGroupService { 7 | /** 8 | * 创建一个Group 9 | * @param user 创建人 10 | * @param groupName 组名称 11 | * @param parentGroup 上一级组 12 | * @param isDirectory 是否为目录 13 | * @return 14 | * @throws ZeusException 15 | */ 16 | public GroupDescriptor createGroup(String user,String groupName,String parentGroup,boolean isDirectory) throws ZeusException; 17 | 18 | public void updateGroup(String uid,GroupDescriptor groupDescriptor) throws ZeusException; 19 | 20 | public void deleteGroup(String uid,String groupId) throws ZeusException; 21 | 22 | public GroupDescriptor getGroupDescriptor(String groupId); 23 | } 24 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/crud/ZeusJobService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client.crud; 2 | 3 | import com.taobao.zeus.client.ZeusException; 4 | import com.taobao.zeus.model.JobDescriptor; 5 | import com.taobao.zeus.model.JobDescriptor.JobRunType; 6 | import com.taobao.zeus.model.JobStatus.TriggerType; 7 | 8 | public interface ZeusJobService { 9 | 10 | public JobDescriptor createJob(String uid,String jobName,String parentGroup,JobRunType jobType) throws ZeusException; 11 | 12 | public void updateJob(String uid,JobDescriptor jobDescriptor) throws ZeusException; 13 | 14 | public void deleteJob(String uid,String jobId) throws ZeusException; 15 | 16 | public JobDescriptor getJobDescriptor(String jobId); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/operate/ZeusHelperService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client.operate; 2 | 3 | import java.util.Map; 4 | 5 | import com.taobao.zeus.model.JobHistory; 6 | 7 | public interface ZeusHelperService { 8 | /** 9 | * 获取Job所有的配置项(包含继承下来的配置项) 10 | * @param jobId 11 | * @return 12 | */ 13 | public Map getJobAllProperties(String jobId); 14 | /** 15 | * 获取Job的一次运行记录 16 | * @param jobId 17 | * @param historyId 18 | * @return 19 | */ 20 | public JobHistory getJobHistory(String historyId); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/operate/ZeusInvokeService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client.operate; 2 | 3 | import java.util.Map; 4 | 5 | import com.taobao.zeus.client.ZeusException; 6 | import com.taobao.zeus.model.JobStatus.TriggerType; 7 | 8 | public interface ZeusInvokeService { 9 | /** 10 | * 同步执行一个任务 11 | * 直到该任务执行完毕,才会返回 12 | * 触发类型只能设置 手动触发 或者 手动恢复 13 | * @param uid 14 | * @param jobId 15 | * @param type 16 | * @throws ZeusException 17 | * @return map keys:id,historyId,time,status 18 | */ 19 | public Map syncExecuteJob(String uid,String jobId,TriggerType type,Map prop) throws ZeusException; 20 | /** 21 | * 异步调用宙斯任务 22 | * 触发类型只能设置 手动触发 或者 手动恢复 23 | * @param uid 24 | * @param jobId 25 | * @param type 26 | * @param prop 27 | * @throws ZeusException 28 | */ 29 | public String asyncExecuteJob(String uid,String jobId,TriggerType type,Map prop) throws ZeusException; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/client/operate/ZeusJobOperateService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.client.operate; 2 | 3 | import com.taobao.zeus.client.ZeusException; 4 | import com.taobao.zeus.model.JobStatus.TriggerType; 5 | /** 6 | * 对Zeus Job的操作处理 7 | * @author zhoufang 8 | * 9 | */ 10 | public interface ZeusJobOperateService { 11 | /** 12 | * 设置任务的自动调度开关 13 | * @param uid 14 | * @param jobId 15 | * @param auto 16 | */ 17 | public void autoScheduleJob(String uid,String jobId,Boolean auto) throws ZeusException; 18 | /** 19 | * 执行一个任务 20 | * 触发类型只能设置 手动触发 或者 手动恢复 21 | * @param uid 22 | * @param jobId 23 | * @param type 24 | * @throws ZeusException 25 | */ 26 | @Deprecated 27 | public void executeJob(String uid,String jobId,TriggerType type) throws ZeusException; 28 | 29 | /** 30 | * 手动执行任务,并且返回该任务的historyId 31 | * @param uid 32 | * @param jobId 33 | * @return historyId 34 | * @throws ZeusException 35 | */ 36 | @Deprecated 37 | public String executeJob(String uid,String jobId) throws ZeusException; 38 | } 39 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/LogContent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model; 2 | 3 | import java.io.PrintWriter; 4 | import java.io.StringWriter; 5 | 6 | public class LogContent { 7 | private int lines = 0; 8 | private StringBuffer content = new StringBuffer(); 9 | 10 | public void appendConsole(String log) { 11 | if (lines < 10000) { 12 | lines++; 13 | content.append("CONSOLE# ").append(log).append("\n"); 14 | if (lines == 10000) { 15 | content.append("ZEUS# 控制台输出信息过多,停止记录,建议您优化自己的Job"); 16 | } 17 | } 18 | } 19 | 20 | public void appendZeus(String log) { 21 | lines++; 22 | content.append("ZEUS# ").append(log).append("\n"); 23 | } 24 | 25 | public void appendZeusException(Exception e) { 26 | if (e == null) { 27 | return; 28 | } 29 | StringWriter sw = new StringWriter(); 30 | e.printStackTrace(new PrintWriter(sw)); 31 | appendZeus(sw.toString()); 32 | } 33 | 34 | public void setContent(StringBuffer content) { 35 | this.content = content; 36 | } 37 | 38 | public String getContent() { 39 | return content.toString(); 40 | } 41 | 42 | public int getLines() { 43 | return lines; 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/Profile.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model; 2 | 3 | import java.util.Date; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | public class Profile { 8 | 9 | private String id; 10 | 11 | private String uid; 12 | 13 | private Map hadoopConf=new HashMap(); 14 | 15 | private Date gmtCreate=new Date(); 16 | 17 | private Date gmtModified=new Date(); 18 | 19 | public Map getHadoopConf() { 20 | return hadoopConf; 21 | } 22 | 23 | public void setHadoopConf(Map hadoopConf) { 24 | this.hadoopConf = hadoopConf; 25 | } 26 | 27 | public String getUid() { 28 | return uid; 29 | } 30 | 31 | public void setUid(String uid) { 32 | this.uid = uid; 33 | } 34 | 35 | public String getId() { 36 | return id; 37 | } 38 | 39 | public void setId(String id) { 40 | this.id = id; 41 | } 42 | 43 | public Date getGmtCreate() { 44 | return gmtCreate; 45 | } 46 | 47 | public void setGmtCreate(Date gmtCreate) { 48 | this.gmtCreate = gmtCreate; 49 | } 50 | 51 | public Date getGmtModified() { 52 | return gmtModified; 53 | } 54 | 55 | public void setGmtModified(Date gmtModified) { 56 | this.gmtModified = gmtModified; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/ZeusFollow.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model; 2 | 3 | /** 4 | * 用户关注的Group或者Job 5 | * @author zhoufang 6 | * 7 | */ 8 | public class ZeusFollow { 9 | 10 | public static final Integer GroupType=1; 11 | public static final Integer JobType=2; 12 | private Long id; 13 | /** 14 | * 关注的类型 15 | * 1:group 2:Job 16 | */ 17 | private Integer type; 18 | 19 | private String uid; 20 | 21 | /** 22 | * 关注的目标id 23 | * 如果关注group 则这里是group id 24 | * 如果关注的是Job 则这里是Job id 25 | */ 26 | private String targetId; 27 | 28 | public Long getId() { 29 | return id; 30 | } 31 | 32 | public void setId(Long id) { 33 | this.id = id; 34 | } 35 | 36 | public Integer getType() { 37 | return type; 38 | } 39 | 40 | public void setType(Integer type) { 41 | this.type = type; 42 | } 43 | 44 | public String getTargetId() { 45 | return targetId; 46 | } 47 | 48 | public void setTargetId(String targetId) { 49 | this.targetId = targetId; 50 | } 51 | 52 | public String getUid() { 53 | return uid; 54 | } 55 | 56 | public void setUid(String uid) { 57 | this.uid = uid; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/DownloadProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | /** 3 | * 下载资源文件 4 | * @author zhoufang 5 | * 6 | */ 7 | public class DownloadProcesser implements Processer{ 8 | 9 | private static final long serialVersionUID = 1L; 10 | 11 | @Override 12 | public String getConfig() { 13 | return ""; 14 | } 15 | 16 | @Override 17 | public String getId() { 18 | return "download"; 19 | } 20 | 21 | @Override 22 | public void parse(String configs) { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/MailProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | 3 | import net.sf.json.JSONObject; 4 | 5 | /** 6 | * 邮件通知 7 | * @author zhoufang 8 | * 9 | */ 10 | public class MailProcesser implements Processer{ 11 | private static final long serialVersionUID = 1L; 12 | private String subject; 13 | private String template; 14 | @Override 15 | public String getConfig() { 16 | JSONObject o=new JSONObject(); 17 | o.put("subject", getSubject()); 18 | o.put("template", getTemplate()); 19 | return o.toString(); 20 | } 21 | 22 | @Override 23 | public String getId() { 24 | return "mail"; 25 | } 26 | 27 | @Override 28 | public void parse(String configs) { 29 | JSONObject o=JSONObject.fromObject(configs); 30 | setTemplate(o.getString("template")); 31 | setSubject(o.getString("subject")); 32 | } 33 | 34 | public String getTemplate() { 35 | return template; 36 | } 37 | 38 | public void setTemplate(String template) { 39 | this.template = template; 40 | } 41 | 42 | public String getSubject() { 43 | return subject; 44 | } 45 | 46 | public void setSubject(String subject) { 47 | this.subject = subject; 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/MetaProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | /** 3 | * 已经废弃,Meta消息将会默认发送,无需配置 4 | * @author zhoufang 5 | * 6 | */ 7 | @Deprecated 8 | public class MetaProcesser implements Processer{ 9 | 10 | private static final long serialVersionUID = 1L; 11 | 12 | @Override 13 | public String getConfig() { 14 | return ""; 15 | } 16 | 17 | @Override 18 | public String getId() { 19 | return "meta"; 20 | } 21 | 22 | @Override 23 | public void parse(String config) { 24 | 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/OutputCheckProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | 3 | import net.sf.json.JSONObject; 4 | 5 | /** 6 | * 云梯产出数据大小验证 7 | * @author zhoufang 8 | * 9 | */ 10 | public class OutputCheckProcesser implements Processer{ 11 | 12 | private static final long serialVersionUID = 1L; 13 | 14 | private Integer percent=10; 15 | private String path; 16 | @Override 17 | public String getConfig() { 18 | JSONObject o=new JSONObject(); 19 | o.put("percent", percent); 20 | o.put("path", path); 21 | return o.toString(); 22 | } 23 | 24 | @Override 25 | public String getId() { 26 | return "OutputCheck"; 27 | } 28 | 29 | @Override 30 | public void parse(String config) { 31 | JSONObject o=JSONObject.fromObject(config); 32 | percent=o.getInt("percent"); 33 | path=o.getString("path"); 34 | } 35 | 36 | public Integer getPercent() { 37 | return percent; 38 | } 39 | 40 | public void setPercent(Integer percent) { 41 | this.percent = percent; 42 | } 43 | 44 | public String getPath() { 45 | return path; 46 | } 47 | 48 | public void setPath(String path) { 49 | this.path = path; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/OutputCleanProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | 3 | import net.sf.json.JSONObject; 4 | /** 5 | * 6 | * 后置单元,用来删除过期文件 7 | * days: 删除几天以上的文件 8 | * path: 当前job的产出路径 9 | * @author zhoufang 10 | * 11 | */ 12 | public class OutputCleanProcesser implements Processer{ 13 | 14 | private static final long serialVersionUID = 1L; 15 | private int days=7; 16 | private String path; 17 | public String getPath() { 18 | return path; 19 | } 20 | 21 | public void setPath(String path) { 22 | this.path = path; 23 | } 24 | 25 | @Override 26 | public String getConfig() { 27 | JSONObject o=new JSONObject(); 28 | o.put("path", path); 29 | o.put("days", days); 30 | return o.toString(); 31 | } 32 | 33 | @Override 34 | public String getId() { 35 | return "OutputClean"; 36 | } 37 | 38 | @Override 39 | public void parse(String config) { 40 | JSONObject o=JSONObject.fromObject(config); 41 | path=o.getString("path"); 42 | days=o.getInt("days"); 43 | } 44 | 45 | public int getDays() { 46 | return days; 47 | } 48 | 49 | public void setDays(int days) { 50 | this.days = days; 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/Processer.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * 7 | * Processer可以提供Job运行的前置处理或者后置处理 8 | * 9 | * 存储格式: 10 | * {id="",config:""} 11 | * 12 | * @author zhoufang 13 | * 14 | */ 15 | public interface Processer extends Serializable{ 16 | 17 | String getId(); 18 | String getConfig(); 19 | void parse(String config); 20 | } 21 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/WangWangProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | /** 3 | * 旺旺通知 4 | * @author zhoufang 5 | * 6 | */ 7 | public class WangWangProcesser implements Processer{ 8 | 9 | private static final long serialVersionUID = 1L; 10 | private String template; 11 | @Override 12 | public String getConfig() { 13 | return getTemplate(); 14 | } 15 | 16 | @Override 17 | public String getId() { 18 | return "wangwang"; 19 | } 20 | 21 | @Override 22 | public void parse(String config) { 23 | setTemplate(config); 24 | } 25 | 26 | public String getTemplate() { 27 | return template; 28 | } 29 | 30 | public void setTemplate(String template) { 31 | this.template = template; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/model/processer/ZooKeeperProcesser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.model.processer; 2 | 3 | import net.sf.json.JSONObject; 4 | 5 | 6 | /** 7 | * ZooKeeper 处理器 8 | * 用于进行ZK通知 9 | * @author zhoufang 10 | * 11 | */ 12 | public class ZooKeeperProcesser implements Processer{ 13 | 14 | private static final long serialVersionUID = 1L; 15 | private Boolean useDefault=true; 16 | private String host; 17 | private String path; 18 | @Override 19 | public String getConfig() { 20 | JSONObject o=new JSONObject(); 21 | o.put("host", getHost()==null?"":getHost()); 22 | o.put("path", getPath()==null?"":getPath()); 23 | o.put("useDefault", getUseDefault()); 24 | return o.toString(); 25 | } 26 | 27 | 28 | 29 | @Override 30 | public String getId() { 31 | return "zookeeper"; 32 | } 33 | 34 | @Override 35 | public void parse(String configs) { 36 | if("".equals(configs)){ 37 | return; 38 | } 39 | JSONObject o=JSONObject.fromObject(configs); 40 | useDefault=o.getBoolean("useDefault"); 41 | host=o.getString("host"); 42 | path=o.getString("path"); 43 | } 44 | 45 | public Boolean getUseDefault() { 46 | return useDefault; 47 | } 48 | 49 | public void setUseDefault(Boolean useDefault) { 50 | this.useDefault = useDefault; 51 | } 52 | 53 | public String getHost() { 54 | return host; 55 | } 56 | 57 | public void setHost(String host) { 58 | this.host = host; 59 | } 60 | 61 | public String getPath() { 62 | return path; 63 | } 64 | 65 | public void setPath(String path) { 66 | this.path = path; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /client/src/main/java/com/taobao/zeus/util/ZeusStringUtil.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.List; 6 | 7 | public class ZeusStringUtil { 8 | 9 | /** 10 | * 获得str中倒数第n个c的index 11 | * @param str 12 | * @param c 13 | * @param n 14 | * @return 15 | */ 16 | public static int nthLastIndexOf(String str, char c, int n) { 17 | if (str == null) { 18 | return -1; 19 | } 20 | int pos = str.lastIndexOf(c); 21 | while (n-- > 0 && pos != -1) { 22 | pos = str.lastIndexOf(c, pos - 1); 23 | } 24 | return pos; 25 | } 26 | 27 | /** 28 | * 修改自 {@link com.alibaba.common.lang.StringUtil#split(String, char)} 29 | *
连续分隔符处理成空字符串 30 | *
如: 31 | * split("aabad",'a')={"","","b","d"} 32 | * @param str 33 | * @param separatorChar 34 | * 分隔符 35 | * @return 36 | */ 37 | public static String[] split(String str, char separatorChar) { 38 | if (str == null) { 39 | return null; 40 | } 41 | 42 | int length = str.length(); 43 | 44 | if (length == 0) { 45 | return new String[0]; 46 | } 47 | 48 | List list = new ArrayList(); 49 | int i = 0; 50 | int start = 0; 51 | 52 | while (i < length) { 53 | if (str.charAt(i) == separatorChar) { 54 | list.add(str.substring(start, i)); 55 | 56 | start = ++i; 57 | continue; 58 | } 59 | i++; 60 | } 61 | 62 | list.add(str.substring(start, i)); 63 | 64 | return list.toArray(new String[list.size()]); 65 | } 66 | 67 | public static void main(String[] args){ 68 | System.out.println(Arrays.asList((split("aabad",'a')))); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /deploy/.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /deploy/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.taobao.zeus 7 | zeus 8 | 1.0.0-SNAPSHOT 9 | 10 | zeus-deploy 11 | pom 12 | 项目发布 13 | 14 | 15 | zeus 16 | 17 | 18 | maven-assembly-plugin 19 | 20 | 21 | src/main/assembly/assembly.xml 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /deploy/src/main/assembly/assembly.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | war 7 | 8 | 9 | 10 | 11 | ../web/target/exploded/zeus-web.war 12 | 13 | 14 | **/** 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Copyright 1999-2013 Alibaba Group Holding Ltd. 2 | 3 | Licensed under the GNU GPLv3 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.gnu.org/licenses/gpl.html 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/broadcast/alarm/MailAlarm.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.broadcast.alarm; 2 | 3 | import java.util.List; 4 | 5 | public class MailAlarm extends AbstractZeusAlarm{ 6 | 7 | @Override 8 | public void alarm(List users, String title, String content) 9 | throws Exception { 10 | //TODO to be implements 11 | } 12 | } -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/broadcast/alarm/SMSAlarm.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.broadcast.alarm; 2 | 3 | import java.util.List; 4 | 5 | public class SMSAlarm extends AbstractZeusAlarm{ 6 | @Override 7 | public void alarm(List uids, String title, String content) 8 | throws Exception { 9 | //TODO to be implements 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/broadcast/alarm/ZeusAlarm.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.broadcast.alarm; 2 | 3 | import com.taobao.zeus.schedule.mvc.JobFailListener.ChainException; 4 | 5 | public interface ZeusAlarm { 6 | 7 | void alarm(String historyId,String title,String content,ChainException chain) throws Exception; 8 | 9 | void alarm(String historyId,String title,String content) throws Exception; 10 | } -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/broadcast/notify/AbstractJobResultNotify.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.broadcast.notify; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.beans.factory.annotation.Qualifier; 5 | 6 | import com.taobao.zeus.store.GroupManager; 7 | import com.taobao.zeus.store.JobHistoryManager; 8 | 9 | public abstract class AbstractJobResultNotify implements JobResultNotify{ 10 | @Autowired 11 | protected JobHistoryManager jobHistoryManager; 12 | @Autowired 13 | @Qualifier("groupManager") 14 | protected GroupManager groupManager; 15 | 16 | } -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/broadcast/notify/JobResultNotify.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.broadcast.notify; 2 | 3 | public interface JobResultNotify { 4 | 5 | void send(String historyId,String data) throws Exception; 6 | } -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/Job.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs; 2 | 3 | 4 | 5 | 6 | public interface Job { 7 | 8 | Integer run() throws Exception; 9 | 10 | void cancel(); 11 | 12 | JobContext getJobContext(); 13 | 14 | boolean isCanceled(); 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/HadoopShellJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub; 2 | 3 | import com.taobao.zeus.jobs.JobContext; 4 | import com.taobao.zeus.util.RunningJobKeys; 5 | 6 | public class HadoopShellJob extends ShellJob{ 7 | 8 | public HadoopShellJob(JobContext jobContext) { 9 | super(jobContext); 10 | jobContext.getProperties().setProperty(RunningJobKeys.JOB_RUN_TYPE, "HadoopShellJob"); 11 | } 12 | 13 | @Override 14 | public Integer run() throws Exception { 15 | return super.run(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/conf/DailyConf.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.conf; 2 | 3 | import org.apache.hadoop.conf.Configuration; 4 | 5 | 6 | public class DailyConf extends Configuration{ 7 | 8 | public DailyConf(){ 9 | set("hadoop.job.ugi", "tbauction,cug-dev-other,cug-dev-tbdp,#commodity"); 10 | set("mapred.job.queue.name","cug-dev-other"); 11 | set("proxy.hosts","10.232.101.170:1080"); 12 | set("hadoop.rpc.socket.factory.class.default","com.taobao.cmp.proxy.HadoopProxy"); 13 | set("fs.default.name", "hdfs://hdpnn:9000"); 14 | set("mapred.working.dir", "/group/tbdataapplication/zhoufang"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/conf/OnlineConf.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.conf; 2 | 3 | import org.apache.hadoop.conf.Configuration; 4 | 5 | public class OnlineConf extends Configuration{ 6 | public OnlineConf(){ 7 | set("hadoop.job.ugi", "tbresys,cug-tbauction,cug-tbdp,cug-tbptd-dev,cug-verticalmarket,cug-tbdataapplication,cug-taobao-sns,cug-mercury,#resys123"); 8 | set("mapred.job.queue.name","cug-tbdataapplication"); 9 | set("proxy.hosts","172.24.160.65:1080"); 10 | set("hadoop.rpc.socket.factory.class.default","com.taobao.cmp.proxy.HadoopProxy"); 11 | set("fs.default.name", "hdfs://hdpnn:9000"); 12 | set("mapred.job.tracker","hdpjt:9001"); 13 | set("mapred.working.dir", "/group/tbdataapplication/tbresys"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/tool/CopyLocalFileJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.tool; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | 6 | import com.taobao.zeus.jobs.JobContext; 7 | import com.taobao.zeus.jobs.ProcessJob; 8 | 9 | public class CopyLocalFileJob extends ProcessJob{ 10 | 11 | private String sourcePath; 12 | public CopyLocalFileJob(JobContext jobContext,String path) { 13 | super(jobContext); 14 | this.sourcePath=path; 15 | } 16 | 17 | @Override 18 | public List getCommandList() { 19 | String command="cp "+sourcePath+" "+getJobContext().getWorkDir(); 20 | return Arrays.asList(command); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/tool/DownloadHdfsFileJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.tool; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import com.taobao.zeus.jobs.JobContext; 7 | import com.taobao.zeus.jobs.ProcessJob; 8 | import com.taobao.zeus.util.JobUtils; 9 | 10 | /** 11 | * 从HDFS文件系统下载到本地文件系统 12 | * 13 | * @author zhoufang 14 | * 15 | */ 16 | public class DownloadHdfsFileJob extends ProcessJob { 17 | 18 | private String hdfsFilePath; 19 | private String localPath; 20 | 21 | public DownloadHdfsFileJob(final JobContext jobContext, final String localPath, 22 | final String hdfsFilePath) { 23 | super(jobContext); 24 | this.localPath = localPath; 25 | this.hdfsFilePath = hdfsFilePath; 26 | 27 | } 28 | 29 | @Override 30 | public List getCommandList() { 31 | String hadoopCmd=JobUtils.getHadoopCmd(envMap); 32 | List commands = new ArrayList(); 33 | commands.add(hadoopCmd+" fs -copyToLocal " + hdfsFilePath + " " + localPath); 34 | return commands; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/tool/MailJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.tool; 2 | 3 | import org.springframework.context.ApplicationContext; 4 | 5 | import com.taobao.zeus.broadcast.alarm.MailAlarm; 6 | import com.taobao.zeus.jobs.AbstractJob; 7 | import com.taobao.zeus.jobs.JobContext; 8 | import com.taobao.zeus.model.processer.MailProcesser; 9 | 10 | public class MailJob extends AbstractJob{ 11 | 12 | private MailAlarm mailAlarm; 13 | private MailProcesser processer; 14 | public MailJob(JobContext jobContext,MailProcesser p,ApplicationContext applicationContext) { 15 | super(jobContext); 16 | mailAlarm=(MailAlarm) applicationContext.getBean("mailAlarm"); 17 | this.processer=p; 18 | } 19 | 20 | @Override 21 | public Integer run() throws Exception { 22 | String render=processer.getTemplate(); 23 | jobContext.getJobHistory().getLog().appendZeus("开始执行发送邮件job"); 24 | try { 25 | mailAlarm.alarm(getJobContext().getJobHistory().getId(), processer.getSubject(), render); 26 | jobContext.getJobHistory().getLog().appendZeus("邮件发送成功"); 27 | } catch (Exception e) { 28 | jobContext.getJobHistory().getLog().appendZeusException(e); 29 | } 30 | 31 | return 0; 32 | } 33 | 34 | @Override 35 | public void cancel() { 36 | canceled=true; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/tool/UploadHdfsFileJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.tool; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import com.taobao.zeus.jobs.JobContext; 7 | import com.taobao.zeus.jobs.ProcessJob; 8 | import com.taobao.zeus.util.JobUtils; 9 | 10 | /** 11 | * 上传附件到HDFS系统的Job 12 | * 13 | * @author zhoufang 14 | * 15 | */ 16 | public class UploadHdfsFileJob extends ProcessJob { 17 | 18 | private String localFilePath; 19 | private String hdfsPath; 20 | 21 | public UploadHdfsFileJob(JobContext jobContext, String localFilePath, 22 | String hdfsPath) { 23 | super(jobContext); 24 | this.localFilePath = localFilePath; 25 | this.hdfsPath = hdfsPath; 26 | } 27 | 28 | @Override 29 | public List getCommandList() { 30 | List commands = new ArrayList(); 31 | String hadoopCmd = JobUtils.getHadoopCmd(envMap); 32 | commands.add(hadoopCmd + " fs -copyFromLocal " + localFilePath + " " 33 | + hdfsPath); 34 | return commands; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/jobs/sub/tool/WangWangJob.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.jobs.sub.tool; 2 | 3 | import com.taobao.zeus.jobs.AbstractJob; 4 | import com.taobao.zeus.jobs.JobContext; 5 | 6 | public class WangWangJob extends AbstractJob{ 7 | 8 | public WangWangJob(JobContext jobContext) { 9 | super(jobContext); 10 | } 11 | 12 | @Override 13 | public Integer run() throws Exception { 14 | // TODO Auto-generated method stub 15 | return null; 16 | } 17 | 18 | @Override 19 | public void cancel() { 20 | canceled=true; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/mvc/DispatcherListener.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.mvc; 2 | 3 | /** 4 | * Event listener for dispatcher events. 5 | */ 6 | public class DispatcherListener implements Listener { 7 | 8 | public void handleEvent(MvcEvent e) { 9 | EventType type = e.getType(); 10 | if (type == Dispatcher.BeforeDispatch) { 11 | beforeDispatch(e); 12 | } else if (type == Dispatcher.AfterDispatch) { 13 | afterDispatch(e); 14 | } 15 | } 16 | 17 | /** 18 | * Fires before an event is dispatched. Listeners can cancel the action by 19 | * calling {@link BaseEvent#setCancelled(boolean)}. 20 | * 21 | * @param mvce the application event to be dispatched 22 | */ 23 | public void beforeDispatch(MvcEvent mvce) { 24 | 25 | } 26 | 27 | /** 28 | * Fires after an event has been dispatched. 29 | * 30 | * @param mvce the event that was dispatched 31 | */ 32 | public void afterDispatch(MvcEvent mvce) { 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/mvc/EventType.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.mvc; 2 | 3 | import java.io.Serializable; 4 | 5 | public class EventType implements Serializable { 6 | 7 | private static final long serialVersionUID = 1L; 8 | 9 | private static int count = 0; 10 | 11 | // needed to use FastMap for much better speed 12 | final String id; 13 | 14 | private int eventCode = -1; 15 | 16 | /** 17 | * Creates a new event type. 18 | */ 19 | public EventType() { 20 | id = String.valueOf(count++); 21 | } 22 | 23 | /** 24 | * Creates a new browser based event type. 25 | * 26 | * @param eventCode additional information about the event 27 | */ 28 | public EventType(int eventCode) { 29 | this(); 30 | this.eventCode = eventCode; 31 | } 32 | 33 | /** 34 | * Returns the event code. 35 | * 36 | * @return the event code 37 | * @see Event 38 | */ 39 | public int getEventCode() { 40 | return eventCode; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/mvc/Listener.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.mvc; 2 | 3 | import java.util.EventListener; 4 | 5 | /** 6 | * Interface for objects that are notified of GXT events. 7 | * 8 | *
 9 |     Button btn = new Button();
10 |     btn.addListener(Events.Select, new Listener<ButtonEvent>() {
11 |       public void handleEvent(ButtonEvent be) {
12 |         Button button = be.button;
13 |       }
14 |     });
15 |  * 
16 | * @param the base event type 17 | */ 18 | public interface Listener extends EventListener { 19 | 20 | /** 21 | * Sent when an event that the listener has registered for occurs. 22 | * 23 | * @param be the event which occurred 24 | */ 25 | public void handleEvent(E be); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/ZeusSchedule.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule; 2 | 3 | import java.util.concurrent.atomic.AtomicBoolean; 4 | 5 | import org.springframework.context.ApplicationContext; 6 | 7 | import com.taobao.zeus.socket.master.MasterContext; 8 | 9 | /** 10 | * Zeus 调度系统 11 | * @author zhoufang 12 | * 13 | */ 14 | public class ZeusSchedule{ 15 | 16 | private AtomicBoolean running=new AtomicBoolean(false); 17 | 18 | private MasterContext context; 19 | private ApplicationContext applicationContext; 20 | public ZeusSchedule(ApplicationContext applicationContext){ 21 | this.applicationContext=applicationContext; 22 | } 23 | 24 | public void startup(int port){ 25 | if(!running.compareAndSet(false, true)){ 26 | return; 27 | } 28 | context=new MasterContext(applicationContext); 29 | context.init(port); 30 | } 31 | 32 | public void shutdown(){ 33 | if(running.compareAndSet(true, false)){ 34 | context.destory(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/hsf/CacheJobDescriptor.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.hsf; 2 | 3 | import java.util.Date; 4 | 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | import com.taobao.zeus.model.JobDescriptor; 9 | import com.taobao.zeus.model.JobStatus; 10 | import com.taobao.zeus.store.GroupManager; 11 | import com.taobao.zeus.util.Tuple; 12 | 13 | public class CacheJobDescriptor { 14 | private static Logger log=LoggerFactory.getLogger(CacheJobDescriptor.class); 15 | private GroupManager groupManager; 16 | 17 | private final String jobId; 18 | private JobDescriptor jobDescriptor; 19 | private Date lastTime=new Date(); 20 | 21 | public CacheJobDescriptor(String jobId,GroupManager groupManager){ 22 | this.jobId=jobId; 23 | this.groupManager=groupManager; 24 | } 25 | 26 | 27 | public JobDescriptor getJobDescriptor() { 28 | if(jobDescriptor==null || System.currentTimeMillis()-lastTime.getTime()>60*1000L){ 29 | try { 30 | Tuple job=groupManager.getJobDescriptor(jobId); 31 | if(job!=null){ 32 | jobDescriptor=job.getX(); 33 | }else{ 34 | jobDescriptor=null; 35 | } 36 | lastTime=new Date(); 37 | } catch (Exception e) { 38 | log.error("load job descriptor fail",e); 39 | } 40 | } 41 | return jobDescriptor; 42 | } 43 | 44 | public void refresh(){ 45 | Tuple job=groupManager.getJobDescriptor(jobId); 46 | if(job!=null){ 47 | jobDescriptor=job.getX(); 48 | }else{ 49 | jobDescriptor=null; 50 | } 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/DebugInfoLog.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class DebugInfoLog { 7 | private static Logger log=LoggerFactory.getLogger(DebugInfoLog.class); 8 | 9 | public static void info(String msg){ 10 | log.info(msg); 11 | } 12 | 13 | public static void error(String msg,Exception e){ 14 | log.error(msg,e); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/ScheduleInfoLog.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class ScheduleInfoLog { 7 | 8 | private static Logger log=LoggerFactory.getLogger(ScheduleInfoLog.class); 9 | 10 | public static void info(String msg){ 11 | log.info(msg); 12 | } 13 | 14 | public static void error(String msg,Exception e){ 15 | log.error(msg,e); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/StopScheduleJobListener.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc; 2 | 3 | import com.taobao.zeus.mvc.DispatcherListener; 4 | import com.taobao.zeus.mvc.MvcEvent; 5 | import com.taobao.zeus.schedule.mvc.event.Events; 6 | 7 | /** 8 | * 阻止Job任务进行自动调度(包含自动调度和手动恢复) 9 | * 预发环境下使用 10 | * 预发环境不允许运行自动调度,手动恢复,只能运行手动调度 11 | * @author zhoufang 12 | * 13 | */ 14 | public class StopScheduleJobListener extends DispatcherListener{ 15 | 16 | @Override 17 | public void beforeDispatch(MvcEvent mvce) { 18 | if(mvce.getAppEvent().getType()==Events.Initialize){ 19 | //取消初始化事件,放置Job进行出错任务重试,以及开启定时器 20 | mvce.setCancelled(true); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/ZeusJobException.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc; 2 | 3 | import com.taobao.zeus.client.ZeusException; 4 | 5 | public class ZeusJobException extends ZeusException{ 6 | 7 | private static final long serialVersionUID = 1L; 8 | private String causeJobId; 9 | 10 | public ZeusJobException(String jobId,String msg){ 11 | super(msg); 12 | this.causeJobId=jobId; 13 | } 14 | 15 | public ZeusJobException(String jobId,String msg,Throwable cause){ 16 | super(msg, cause); 17 | this.causeJobId=jobId; 18 | 19 | } 20 | 21 | public String getCauseJobId() { 22 | return causeJobId; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/DebugFailEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.model.DebugHistory; 4 | import com.taobao.zeus.model.JobStatus.TriggerType; 5 | import com.taobao.zeus.mvc.AppEvent; 6 | /** 7 | * Job失败触发的事件 8 | * @author zhoufang 9 | * 10 | */ 11 | public class DebugFailEvent extends AppEvent{ 12 | 13 | private final DebugHistory history; 14 | private final String fileId; 15 | private final Throwable throwable; 16 | public DebugFailEvent(String jobId) { 17 | this(jobId,null,null); 18 | } 19 | 20 | public DebugFailEvent(String fileId,DebugHistory history,Throwable t){ 21 | super(Events.JobFailed); 22 | this.fileId=fileId; 23 | this.history=history; 24 | this.throwable=t; 25 | } 26 | 27 | public String getFileId() { 28 | return fileId; 29 | } 30 | 31 | public DebugHistory getHistory() { 32 | return history; 33 | } 34 | 35 | public Throwable getThrowable() { 36 | return throwable; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/DebugSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.model.DebugHistory; 4 | import com.taobao.zeus.mvc.AppEvent; 5 | /** 6 | * Job执行成功事件 7 | * @author zhoufang 8 | * 9 | */ 10 | public class DebugSuccessEvent extends AppEvent{ 11 | private DebugHistory history; 12 | private String fileId; 13 | public DebugSuccessEvent(String fileId,DebugHistory history) { 14 | super(Events.JobSucceed); 15 | this.fileId=fileId; 16 | this.history=history; 17 | } 18 | 19 | public String getFileId() { 20 | return fileId; 21 | } 22 | 23 | public DebugHistory getHistory() { 24 | return history; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/Events.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.mvc.EventType; 4 | 5 | public class Events { 6 | 7 | public static final EventType Initialize=new EventType(); 8 | //Job执行成功 9 | public static final EventType JobSucceed=new EventType(); 10 | //Job执行失败 11 | public static final EventType JobFailed=new EventType(); 12 | //触发Job定时任务 13 | public static final EventType ScheduleTrigger=new EventType(); 14 | 15 | //新增Job 16 | // public static final EventType AddJob=new EventType(); 17 | //更新一个Job 18 | public static final EventType UpdateJob=new EventType(); 19 | //删除一个Job 20 | // public static final EventType DeleteJob=new EventType(); 21 | 22 | public static final EventType JobCancel=new EventType(); 23 | } 24 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/JobCancelEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.mvc.AppEvent; 4 | 5 | public class JobCancelEvent extends AppEvent{ 6 | 7 | private String jobId; 8 | public JobCancelEvent(String jobId) { 9 | super(Events.JobCancel); 10 | this.jobId=jobId; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/JobFailedEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.model.JobHistory; 4 | import com.taobao.zeus.model.JobStatus.TriggerType; 5 | import com.taobao.zeus.mvc.AppEvent; 6 | import com.taobao.zeus.schedule.mvc.ZeusJobException; 7 | /** 8 | * Job失败触发的事件 9 | * @author zhoufang 10 | * 11 | */ 12 | public class JobFailedEvent extends AppEvent{ 13 | 14 | private final JobHistory history; 15 | private final String jobId; 16 | private TriggerType triggerType; 17 | private final ZeusJobException jobException; 18 | 19 | public JobFailedEvent(String jobId,TriggerType triggerType) { 20 | this(jobId,triggerType,null,null); 21 | } 22 | 23 | public JobFailedEvent(String jobId,TriggerType triggerType,JobHistory history,ZeusJobException t){ 24 | super(Events.JobFailed); 25 | this.jobId=jobId; 26 | this.triggerType=triggerType; 27 | this.history=history; 28 | this.jobException=t; 29 | } 30 | 31 | public String getJobId() { 32 | return jobId; 33 | } 34 | 35 | 36 | public TriggerType getTriggerType() { 37 | return triggerType; 38 | } 39 | 40 | public JobHistory getHistory() { 41 | return history; 42 | } 43 | 44 | public ZeusJobException getJobException() { 45 | return jobException; 46 | } 47 | 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/JobMaintenanceEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.mvc.AppEvent; 4 | import com.taobao.zeus.mvc.EventType; 5 | 6 | public class JobMaintenanceEvent extends AppEvent { 7 | 8 | private final String jobId; 9 | public JobMaintenanceEvent(EventType type,String jobId){ 10 | super(type); 11 | this.jobId=jobId; 12 | } 13 | public String getJobId() { 14 | return jobId; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/JobSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.model.JobStatus.TriggerType; 4 | import com.taobao.zeus.mvc.AppEvent; 5 | /** 6 | * Job执行成功事件 7 | * @author zhoufang 8 | * 9 | */ 10 | public class JobSuccessEvent extends AppEvent{ 11 | private String historyId; 12 | private String jobId; 13 | private TriggerType triggerType; 14 | private String statisEndTime; 15 | public JobSuccessEvent(String jobId,TriggerType triggerType,String historyId) { 16 | super(Events.JobSucceed); 17 | this.jobId=jobId; 18 | this.triggerType=triggerType; 19 | this.historyId=historyId; 20 | } 21 | 22 | public String getJobId() { 23 | return jobId; 24 | } 25 | 26 | public String getHistoryId() { 27 | return historyId; 28 | } 29 | 30 | public TriggerType getTriggerType() { 31 | return triggerType; 32 | } 33 | 34 | 35 | 36 | public String getStatisEndTime() { 37 | return statisEndTime; 38 | } 39 | 40 | 41 | 42 | public void setStatisEndTime(String statisEndTime) { 43 | this.statisEndTime = statisEndTime; 44 | } 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/schedule/mvc/event/ScheduleTriggerEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.schedule.mvc.event; 2 | 3 | import com.taobao.zeus.mvc.AppEvent; 4 | 5 | public class ScheduleTriggerEvent extends AppEvent{ 6 | 7 | private final String jobId; 8 | public ScheduleTriggerEvent(String jobId) { 9 | super(Events.ScheduleTrigger); 10 | this.jobId=jobId; 11 | } 12 | public String getJobId() { 13 | return jobId; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/SocketLog.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class SocketLog { 7 | 8 | private static Logger log=LoggerFactory.getLogger(SocketLog.class); 9 | 10 | public static void info(String msg){ 11 | log.error(msg); 12 | } 13 | public static void error(String msg,Throwable t){ 14 | log.error(msg, t); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/master/AtomicIncrease.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket.master; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class AtomicIncrease { 6 | 7 | private static AtomicInteger rid=new AtomicInteger(); 8 | 9 | public static int getAndIncrement(){ 10 | return rid.getAndIncrement(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/master/JobElement.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket.master; 2 | 3 | public class JobElement { 4 | private String jobID; 5 | private String host; 6 | 7 | /** 8 | * @return 9 | */ 10 | public JobElement() { 11 | 12 | } 13 | 14 | public JobElement(String jobID, String host) { 15 | this.jobID = jobID; 16 | this.host = host; 17 | } 18 | 19 | public String getJobID() { 20 | return jobID; 21 | } 22 | 23 | public void setJobID(String jobID) { 24 | this.jobID = jobID; 25 | } 26 | 27 | public String getHost() { 28 | return host; 29 | } 30 | 31 | public void setHost(String host) { 32 | this.host = host; 33 | } 34 | 35 | @Override 36 | public String toString() { 37 | return jobID + ":" + host; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/master/MasterWorkerHolder.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket.master; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | import java.util.concurrent.ConcurrentHashMap; 6 | 7 | import org.jboss.netty.channel.Channel; 8 | 9 | public class MasterWorkerHolder{ 10 | public class HeartBeatInfo{ 11 | public Float memRate; 12 | public List runnings; 13 | public List manualRunnings; 14 | public List debugRunnings; 15 | public Date timestamp; 16 | public String host; 17 | public HeartBeatInfo(){} 18 | } 19 | private final Channel channel; 20 | /** 布尔值标记是不是已经发送过超时报警 */ 21 | private ConcurrentHashMap runnings=new ConcurrentHashMap(); 22 | /** 布尔值标记是不是已经发送过超时报警 */ 23 | private ConcurrentHashMap manualRunnings=new ConcurrentHashMap(); 24 | /** 布尔值标记是不是已经发送过超时报警 */ 25 | private ConcurrentHashMap debugRunnings=new ConcurrentHashMap(); 26 | public HeartBeatInfo heart; 27 | public MasterWorkerHolder(Channel channel){ 28 | this.channel=channel; 29 | } 30 | public Channel getChannel() { 31 | return channel; 32 | } 33 | 34 | public HeartBeatInfo getHeart() { 35 | return heart; 36 | } 37 | public ConcurrentHashMap getRunnings() { 38 | return runnings; 39 | } 40 | public ConcurrentHashMap getDebugRunnings() { 41 | return debugRunnings; 42 | } 43 | public ConcurrentHashMap getManualRunnings() { 44 | return manualRunnings; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/master/reqresp/MasterBeHeartBeat.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket.master.reqresp; 2 | 3 | import java.util.Date; 4 | 5 | import org.jboss.netty.channel.Channel; 6 | 7 | import com.google.protobuf.InvalidProtocolBufferException; 8 | import com.taobao.zeus.socket.master.MasterContext; 9 | import com.taobao.zeus.socket.master.MasterWorkerHolder; 10 | import com.taobao.zeus.socket.master.MasterWorkerHolder.HeartBeatInfo; 11 | import com.taobao.zeus.socket.protocol.Protocol.HeartBeatMessage; 12 | import com.taobao.zeus.socket.protocol.Protocol.Request; 13 | 14 | public class MasterBeHeartBeat { 15 | public void beHeartBeat(MasterContext context,Channel channel,Request request) { 16 | MasterWorkerHolder worker=context.getWorkers().get(channel); 17 | HeartBeatInfo newbeat=worker.new HeartBeatInfo(); 18 | HeartBeatMessage hbm; 19 | try { 20 | hbm = HeartBeatMessage.newBuilder().mergeFrom(request.getBody()).build(); 21 | newbeat.memRate=hbm.getMemRate(); 22 | newbeat.runnings=hbm.getRunningsList(); 23 | newbeat.debugRunnings=hbm.getDebugRunningsList(); 24 | newbeat.manualRunnings=hbm.getManualRunningsList(); 25 | newbeat.timestamp=new Date(hbm.getTimestamp()); 26 | newbeat.host=hbm.getHost(); 27 | if(worker.heart==null || newbeat.timestamp.getTime()>worker.heart.timestamp.getTime()){ 28 | worker.heart=newbeat; 29 | } 30 | } catch (InvalidProtocolBufferException e) { 31 | e.printStackTrace(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/socket/master/reqresp/MasterBeUpdate.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.socket.master.reqresp; 2 | 3 | import com.taobao.zeus.schedule.mvc.event.Events; 4 | import com.taobao.zeus.schedule.mvc.event.JobMaintenanceEvent; 5 | import com.taobao.zeus.socket.SocketLog; 6 | import com.taobao.zeus.socket.master.MasterContext; 7 | import com.taobao.zeus.socket.protocol.Protocol.Status; 8 | import com.taobao.zeus.socket.protocol.Protocol.WebOperate; 9 | import com.taobao.zeus.socket.protocol.Protocol.WebRequest; 10 | import com.taobao.zeus.socket.protocol.Protocol.WebResponse; 11 | 12 | public class MasterBeUpdate { 13 | public WebResponse beWebUpdate(MasterContext context,WebRequest req) { 14 | 15 | context.getDispatcher().forwardEvent(new JobMaintenanceEvent(Events.UpdateJob,req.getId())); 16 | WebResponse resp=WebResponse.newBuilder().setRid(req.getRid()).setOperate(WebOperate.UpdateJob) 17 | .setStatus(Status.OK).build(); 18 | SocketLog.info("send web update response,rid="+req.getRid()+",jobId="+req.getId()); 19 | return resp; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/DebugHistoryManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.model.DebugHistory; 6 | 7 | public interface DebugHistoryManager { 8 | 9 | public DebugHistory addDebugHistory(DebugHistory history); 10 | 11 | DebugHistory findDebugHistory(String id); 12 | /** 13 | * 分页查询Job历史记录,注意返回结果中不包含 日志内容 字段 14 | * @param jobId 15 | * @param start 16 | * @param limit 17 | * @return 18 | */ 19 | public List pagingList(final String fileId,final int start,final int limit); 20 | public int pagingTotal(String jobId); 21 | 22 | public void updateDebugHistoryLog(String id,String log); 23 | /** 24 | * 更新JobLogHistory,但是不包括log字段 25 | * @param history 26 | */ 27 | public void updateDebugHistory(DebugHistory history); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/FileBean.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.model.FileDescriptor; 6 | 7 | public class FileBean { 8 | 9 | private FileBean parent; 10 | private List subFiles; 11 | private FileDescriptor fileDescriptor; 12 | 13 | public FileBean(FileDescriptor file){ 14 | this.fileDescriptor=file; 15 | } 16 | 17 | public void addSubFile(FileBean bean){ 18 | if(!subFiles.contains(bean)){ 19 | subFiles.add(bean); 20 | } 21 | } 22 | 23 | public List getSubFiles() { 24 | return subFiles; 25 | } 26 | 27 | public FileDescriptor getFileDescriptor() { 28 | return fileDescriptor; 29 | } 30 | 31 | public FileBean getParent() { 32 | return parent; 33 | } 34 | 35 | public void setParent(FileBean parent) { 36 | this.parent = parent; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/FileManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.model.FileDescriptor; 6 | 7 | public interface FileManager { 8 | String PERSONAL="个人文档"; 9 | String SHARE="共享文档"; 10 | /** 11 | * 添加文件/文件夹 12 | * @param file 13 | * @return id 14 | */ 15 | FileDescriptor addFile(String uid,String parentId,String name,boolean folder); 16 | 17 | /** 18 | * 删除文件/文件夹 19 | * @param file 20 | */ 21 | public void deleteFile(String fileId); 22 | /** 23 | * 后台查询File最新内容 24 | * @param id 25 | * @param callback 26 | */ 27 | public FileDescriptor getFile(String id); 28 | 29 | public void update(FileDescriptor fd); 30 | 31 | public List getSubFiles(String id); 32 | 33 | public List getUserFiles(String uid); 34 | } 35 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/FollowManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.model.ZeusFollow; 6 | import com.taobao.zeus.store.mysql.persistence.ZeusUser; 7 | 8 | 9 | public interface FollowManager { 10 | /** 11 | * 新增一个关注 12 | * @param uid 13 | * @param type 14 | * @param targetId 15 | * @return 16 | */ 17 | ZeusFollow addFollow(String uid,Integer type,String targetId) ; 18 | /** 19 | * 删除一个关注 20 | * @param uid 21 | * @param type 22 | * @param targetId 23 | * @return 24 | */ 25 | void deleteFollow(String uid,Integer type,String targetId); 26 | /** 27 | * 查询用户的所有关注 28 | * @param uid 29 | * @return 30 | */ 31 | List findAllTypeFollows(String uid); 32 | /** 33 | * 查询关注的所有Group 34 | * @param uid 35 | * @return 36 | */ 37 | List findFollowedGroups(String uid); 38 | /** 39 | * 查询关注的所有Job 40 | * @param uid 41 | * @return 42 | */ 43 | List findFollowedJobs(String uid); 44 | /** 45 | * 查询关注该Job的人员名单 46 | * @param jobId 47 | * @return 48 | */ 49 | List findJobFollowers(String jobId); 50 | /** 51 | * 查询关注该group的人员名单 52 | * @param groupId 53 | * @return 54 | */ 55 | List findGroupFollowers(List groupIds); 56 | /** 57 | * 查询实际关注该job的人 58 | * 综合考虑了job自身被关注的人,以及上层group被关注的人 59 | * @param jobId 60 | * @return 61 | */ 62 | List findActualJobFollowers(String jobId); 63 | } 64 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/JobHistoryManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.taobao.zeus.model.JobHistory; 7 | 8 | public interface JobHistoryManager { 9 | 10 | public JobHistory addJobHistory(JobHistory history); 11 | 12 | JobHistory findJobHistory(String id); 13 | /** 14 | * 分页查询Job历史记录,注意返回结果中不包含 日志内容 字段 15 | * @param jobId 16 | * @param start 17 | * @param limit 18 | * @return 19 | */ 20 | public List pagingList(final String jobId,final int start,final int limit); 21 | public int pagingTotal(String jobId); 22 | 23 | public void updateJobHistoryLog(String id,String log); 24 | /** 25 | * 更新JobLogHistory,但是不保护log字段 26 | * @param history 27 | */ 28 | public void updateJobHistory(JobHistory history); 29 | /** 30 | * 批量获取Job的最后一次执行历史 31 | * @param historyIdList 32 | * @return 33 | */ 34 | public Map findLastHistoryByList(List jobIds); 35 | /** 36 | * 获取最近24小时内,运行状态的所有记录 37 | * @return 38 | */ 39 | public List findRecentRunningHistory(); 40 | } 41 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/PermissionManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.client.ZeusException; 6 | import com.taobao.zeus.store.mysql.persistence.ZeusUser; 7 | 8 | public interface PermissionManager { 9 | 10 | Boolean hasGroupPermission(String user,String groupId); 11 | 12 | Boolean hasJobPermission(String user,String jobId); 13 | 14 | /** 15 | * 添加组的管理员 16 | * @param user 被授权人 17 | */ 18 | void addGroupAdmin(String user,String groupId) throws ZeusException; 19 | /** 20 | * 删除组管理员 21 | * @param user 被授权人 22 | */ 23 | void removeGroupAdmin(String user,String groupId) throws ZeusException; 24 | 25 | void addJobAdmin(String user,String jobId) throws ZeusException; 26 | 27 | void removeJobAdmin(String user,String jobId) throws ZeusException; 28 | /** 29 | * 该组的管理员名单 30 | * @param groupId 31 | * @return 32 | */ 33 | List getGroupAdmins(String groupId); 34 | /** 35 | * 该Job的管理员名单 36 | * @param jobId 37 | * @return 38 | */ 39 | List getJobAdmins(String jobId); 40 | } 41 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/ProfileManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import com.taobao.zeus.model.Profile; 4 | 5 | public interface ProfileManager { 6 | 7 | Profile findByUid(String uid); 8 | 9 | void update(String uid,Profile p) throws Exception; 10 | } 11 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/Super.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.Arrays; 4 | import java.util.List; 5 | 6 | public class Super { 7 | 8 | private static final List supers = Arrays.asList("yangfei"); 9 | 10 | public static List getSupers() { 11 | return supers; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/UserManager.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store; 2 | 3 | import java.util.List; 4 | 5 | import com.taobao.zeus.store.mysql.persistence.ZeusUser; 6 | 7 | 8 | public interface UserManager{ 9 | 10 | public List getAllUsers(); 11 | 12 | public ZeusUser findByUid(String uid); 13 | 14 | public List findListByUid(List uids); 15 | 16 | public ZeusUser addOrUpdateUser(ZeusUser user); 17 | } 18 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/persistence/DistributeLock.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.persistence; 2 | 3 | import java.util.Date; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.GeneratedValue; 8 | import javax.persistence.Id; 9 | 10 | @Entity(name="zeus_lock") 11 | public class DistributeLock { 12 | @Id 13 | @GeneratedValue 14 | private Integer id; 15 | @Column 16 | private String host; 17 | @Column(name="server_update") 18 | private Date serverUpdate; 19 | @Column(name="gmt_create") 20 | private Date gmtCreate=new Date(); 21 | @Column(name="gmt_modified") 22 | private Date gmtModified=new Date(); 23 | @Column 24 | private String subgroup; 25 | public Integer getId() { 26 | return id; 27 | } 28 | public void setId(Integer id) { 29 | this.id = id; 30 | } 31 | public String getHost() { 32 | return host; 33 | } 34 | public void setHost(String host) { 35 | this.host = host; 36 | } 37 | public Date getServerUpdate() { 38 | return serverUpdate; 39 | } 40 | public void setServerUpdate(Date serverUpdate) { 41 | this.serverUpdate = serverUpdate; 42 | } 43 | public Date getGmtCreate() { 44 | return gmtCreate; 45 | } 46 | public void setGmtCreate(Date gmtCreate) { 47 | this.gmtCreate = gmtCreate; 48 | } 49 | public Date getGmtModified() { 50 | return gmtModified; 51 | } 52 | public void setGmtModified(Date gmtModified) { 53 | this.gmtModified = gmtModified; 54 | } 55 | public String getSubgroup() { 56 | return subgroup; 57 | } 58 | public void setSubgroup(String subgroup) { 59 | this.subgroup = subgroup; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/persistence/ProfilePersistence.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.persistence; 2 | 3 | import java.util.Date; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.GeneratedValue; 8 | import javax.persistence.Id; 9 | 10 | @Entity(name="zeus_profile") 11 | public class ProfilePersistence { 12 | @Id 13 | @GeneratedValue 14 | private Long id; 15 | @Column 16 | private String uid; 17 | @Column(name="hadoop_conf") 18 | private String hadoopConf; 19 | @Column(name="gmt_create") 20 | private Date gmtCreate=new Date(); 21 | @Column(name="gmt_modified") 22 | private Date gmtModified=new Date(); 23 | public Long getId() { 24 | return id; 25 | } 26 | public void setId(Long id) { 27 | this.id = id; 28 | } 29 | public String getUid() { 30 | return uid; 31 | } 32 | public void setUid(String uid) { 33 | this.uid = uid; 34 | } 35 | public String getHadoopConf() { 36 | return hadoopConf; 37 | } 38 | public void setHadoopConf(String hadoopConf) { 39 | this.hadoopConf = hadoopConf; 40 | } 41 | public Date getGmtCreate() { 42 | return gmtCreate; 43 | } 44 | public void setGmtCreate(Date gmtCreate) { 45 | this.gmtCreate = gmtCreate; 46 | } 47 | public Date getGmtModified() { 48 | return gmtModified; 49 | } 50 | public void setGmtModified(Date gmtModified) { 51 | this.gmtModified = gmtModified; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/persistence/TimeZone.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.persistence; 2 | 3 | import javax.persistence.Column; 4 | import javax.persistence.Entity; 5 | import javax.persistence.GeneratedValue; 6 | import javax.persistence.Id; 7 | 8 | @Entity(name = "zeus_timezone") 9 | public class TimeZone { 10 | 11 | @Id 12 | @GeneratedValue 13 | private Integer id; 14 | @Column 15 | private String timezone; 16 | @Column 17 | private Long uid; 18 | 19 | public String getTimezone() { 20 | return timezone; 21 | } 22 | 23 | public void setTimezone(String timezone) { 24 | this.timezone = timezone; 25 | } 26 | 27 | public Long getUid() { 28 | return uid; 29 | } 30 | 31 | public void setUid(Long uid) { 32 | this.uid = uid; 33 | } 34 | 35 | public Integer getId() { 36 | return id; 37 | } 38 | 39 | public void setId(Integer id) { 40 | this.id = id; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/persistence/Worker.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.persistence; 2 | 3 | import javax.persistence.Column; 4 | import javax.persistence.Entity; 5 | import javax.persistence.Id; 6 | 7 | @Entity(name="zeus_worker") 8 | public class Worker { 9 | @Id 10 | private String host; 11 | @Column 12 | private float rate; 13 | @Column 14 | private long timestamp; 15 | 16 | public String getHost() { 17 | return host; 18 | } 19 | 20 | public void setHost(String host) { 21 | this.host = host; 22 | } 23 | 24 | public float getRate() { 25 | return rate; 26 | } 27 | 28 | public void setRate(float rate) { 29 | this.rate = rate; 30 | } 31 | 32 | public long getTimestamp() { 33 | return timestamp; 34 | } 35 | 36 | public void setTimestamp(long timestamp) { 37 | this.timestamp = timestamp; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/tool/GroupValidate.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.tool; 2 | 3 | import com.taobao.zeus.client.ZeusException; 4 | import com.taobao.zeus.model.GroupDescriptor; 5 | 6 | public class GroupValidate { 7 | public static boolean valide(GroupDescriptor group) throws ZeusException{ 8 | if(group.getName()==null || group.getName().trim().equals("")){ 9 | throw new ZeusException("name字段不能为空"); 10 | } 11 | 12 | return true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/store/mysql/tool/Judge.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.store.mysql.tool; 2 | 3 | import java.util.Date; 4 | /** 5 | * 判断是否需要刷新数据 6 | * @author zhoufang 7 | * 8 | */ 9 | public class Judge { 10 | public Date lastModified=new Date(0); 11 | public Integer maxId=-1; 12 | public Integer count=0; 13 | public Date stamp=new Date(0); 14 | } 15 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/util/Environment.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | 3 | import java.io.File; 4 | 5 | 6 | /** 7 | * 环境类 8 | * 用于判断当前是哪个环境 9 | * 在spring中进行设置 10 | * @author zhoufang 11 | * 12 | */ 13 | public class Environment { 14 | 15 | private static String env; 16 | 17 | /** 18 | * 执行job需要下载资源文件时用到的路径 19 | */ 20 | private static String downloadPath; 21 | private static String scheduleGroup; 22 | 23 | public Environment(String env,String scheduleGroup,String downloadPath){ 24 | Environment.env=env; 25 | Environment.scheduleGroup=scheduleGroup; 26 | Environment.downloadPath=downloadPath; 27 | File file=new File(downloadPath); 28 | if(!file.exists()){ 29 | file.mkdirs(); 30 | } 31 | } 32 | 33 | public static Boolean isOnline(){ 34 | return "online".equalsIgnoreCase(env); 35 | } 36 | 37 | public static Boolean isDaily(){ 38 | return "daily".equalsIgnoreCase(env); 39 | } 40 | public static Boolean isPrePub(){ 41 | return "prepub".equalsIgnoreCase(env); 42 | } 43 | 44 | public static String getScheduleGroup() { 45 | return scheduleGroup; 46 | } 47 | 48 | public static String getDownloadPath() { 49 | return downloadPath; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/util/ExitCodes.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | 3 | public class ExitCodes { 4 | //zk通知失败的exit code 5 | public static final int NOTIFY_ZK_FAIL=10001; 6 | } 7 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/util/RunningJobKeys.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | /** 3 | * Job运行所需要的配置信息 4 | * @author zhoufang 5 | * 6 | */ 7 | public class RunningJobKeys { 8 | /** 9 | * 执行JAVA的Main类路径 10 | */ 11 | public static final String RUN_JAVA_MAIN_CLASS = "java.main.class"; 12 | /** 13 | * JVM配置参数 14 | */ 15 | public static final String RUN_INITIAL_MEMORY_SIZE = "java.Xms"; 16 | /** 17 | * JVM配置参数 18 | */ 19 | public static final String RUN_MAX_MEMORY_SIZE = "java.Xmx"; 20 | /** 21 | * Main方法传入的参数 22 | */ 23 | public static final String RUN_JAVA_MAIN_ARGS = "java.main.args"; 24 | /** 25 | * JVM启动参数 26 | */ 27 | public static final String RUN_JVM_PARAMS = "java.jvm.args"; 28 | /** 29 | * Classpath路径 30 | */ 31 | public static final String RUN_CLASSPATH="java.classpath"; 32 | /** 33 | * 需要执行的shell文件路径 34 | */ 35 | public static final String RUN_SHELLPATH="shell.localfile"; 36 | /** 37 | * 需要执行的hive文件路径 38 | */ 39 | public static final String RUN_HIVE_PATH="hive.localfile"; 40 | /** 41 | * 需要执行的odps文件路径 42 | */ 43 | public static final String RUN_ODPS_PATH="odps.localfile"; 44 | /** 45 | * 任务类型 46 | */ 47 | public static final String JOB_RUN_TYPE="job.jobtype"; 48 | } 49 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/util/Tuple.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Tuple implements Serializable { 6 | 7 | private static final long serialVersionUID = 1L; 8 | private final X x; 9 | private final Y y; 10 | 11 | public Tuple(X x, Y y) { 12 | this.x = x; 13 | this.y = y; 14 | } 15 | 16 | public X getX() { 17 | return x; 18 | } 19 | 20 | public Y getY() { 21 | return y; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "[" + x.toString() + "," + y.toString() + "]"; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /schedule/src/main/java/com/taobao/zeus/util/ZeusDateTool.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.util; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Calendar; 5 | import java.util.Date; 6 | /** 7 | * Zeus日期工具类 8 | * 用于界面配置项的动态替换 9 | * @author zhoufang 10 | * 11 | */ 12 | public class ZeusDateTool { 13 | 14 | private Calendar calendar=Calendar.getInstance(); 15 | 16 | public ZeusDateTool addDay(int amount){ 17 | calendar.add(Calendar.DAY_OF_YEAR, amount); 18 | return this; 19 | } 20 | 21 | public ZeusDateTool add(int field,int amount){ 22 | calendar.add(field, amount); 23 | return this; 24 | } 25 | 26 | public String format(String pattern){ 27 | SimpleDateFormat format=new SimpleDateFormat(pattern); 28 | return format.format(calendar.getTime()); 29 | } 30 | public String currentTimestamp(){ 31 | return String.valueOf(System.currentTimeMillis()/1000); 32 | } 33 | 34 | public static void main(String[] args) { 35 | String v=new ZeusDateTool().add(Calendar.DAY_OF_MONTH,-1000).format("yyyy-MM-dd"); 36 | System.out.println(v); 37 | System.out.println(DateUtil.getDefaultRawOffset()); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /schedule/src/main/java/protobuf.bat: -------------------------------------------------------------------------------- 1 | protoc.exe --java_out=. SocketProtocol.proto 2 | @pause -------------------------------------------------------------------------------- /schedule/src/main/java/protoc.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/schedule/src/main/java/protoc.exe -------------------------------------------------------------------------------- /web/libs/highcharts-1.4.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/libs/highcharts-1.4.0.jar -------------------------------------------------------------------------------- /web/src/main/filter/antx.properties: -------------------------------------------------------------------------------- 1 | #环境配置,用来标记环境,可以配合Environment使用 2 | zeus.env=test-env 3 | zeus.loggingRoot=/Users/zhoufang/zeus/logs 4 | zeus.loggingLevel=warn 5 | #任务执行文件夹,每次任务都会在此文件夹下新建一个临时文件夹 6 | zeus.localdata.dir=/Users/zhoufang/zeus/run_job_dir 7 | #此处必须是hdfs路径,所有的上传附件都会存放在下面路径上 8 | zeus.hdfsLibPath=/hdfs-upload-dir 9 | #环境配置,如果是在一个集群中,需要配置城同一个名称 10 | zeus.schedule.group=test-env 11 | #Scheduler 与 Worker 通信的端口 12 | zeus.connect.port=9887 13 | #hadoop jobtracker地址,填写ip+port 或者 domain+port 14 | zeus.jobtracker=127.0.0.1:50030 15 | 16 | #zk配置非必选,可以为空,此处的zk是用来通知任务的成功失败事件的 17 | zeus.zookeeper.host= -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/LoginUser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web; 2 | 3 | import com.taobao.zeus.store.mysql.persistence.ZeusUser; 4 | 5 | public class LoginUser { 6 | static ThreadLocal user=new ThreadLocal(); 7 | 8 | public static ZeusUser getUser(){ 9 | return user.get(); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/Platform.gwt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/Application.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app; 2 | 3 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 4 | import com.taobao.zeus.web.platform.client.util.Presenter; 5 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 6 | 7 | public interface Application { 8 | 9 | public static final String TAG="App"; 10 | 11 | public Shortcut getShortcut(); 12 | 13 | public PlatformContext getPlatformContext(); 14 | 15 | public Presenter getPresenter(); 16 | 17 | public PlatformPlace getPlace(); 18 | } 19 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/document/DocumentApp.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.document; 2 | 3 | import com.taobao.zeus.web.platform.client.app.Application; 4 | import com.taobao.zeus.web.platform.client.app.PlacePath; 5 | import com.taobao.zeus.web.platform.client.app.PlacePath.App; 6 | import com.taobao.zeus.web.platform.client.app.PlatformPlace; 7 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 8 | import com.taobao.zeus.web.platform.client.util.Presenter; 9 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 10 | 11 | public class DocumentApp implements Application{ 12 | 13 | private PlatformContext platformContext; 14 | private DocumentShortcut shortcut=new DocumentShortcut(); 15 | private DocumentPresenter presenter; 16 | public DocumentApp(PlatformContext context){ 17 | this.platformContext=context; 18 | presenter=new DocumentPresenterImpl(context); 19 | } 20 | @Override 21 | public Shortcut getShortcut() { 22 | return shortcut; 23 | } 24 | 25 | @Override 26 | public PlatformContext getPlatformContext() { 27 | return platformContext; 28 | } 29 | 30 | @Override 31 | public Presenter getPresenter() { 32 | return presenter; 33 | } 34 | @Override 35 | public PlatformPlace getPlace() { 36 | return new PlacePath().toApp(App.Document).create(); 37 | } 38 | 39 | public static final String TAG="doc"; 40 | } 41 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/document/DocumentPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.document; 2 | 3 | import com.taobao.zeus.web.platform.client.module.filemanager.FileManagerPresenter; 4 | import com.taobao.zeus.web.platform.client.module.tablemanager.TableManagerPresenter; 5 | import com.taobao.zeus.web.platform.client.module.word.WordPresenter; 6 | import com.taobao.zeus.web.platform.client.util.Presenter; 7 | 8 | public interface DocumentPresenter extends Presenter{ 9 | 10 | 11 | FileManagerPresenter getFileManagerPresenter(); 12 | 13 | WordPresenter getWordPresenter(); 14 | 15 | TableManagerPresenter getTableManagerPresenter(); 16 | } 17 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/document/DocumentShortcut.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.document; 2 | 3 | import com.taobao.zeus.web.platform.client.theme.ResourcesTool; 4 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 5 | 6 | public class DocumentShortcut extends Shortcut{ 7 | 8 | 9 | public DocumentShortcut() { 10 | super("document","开发中心"); 11 | setIcon(ResourcesTool.iconResources.document()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/document/DocumentView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.document; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | 5 | public interface DocumentView extends IsWidget{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/home/HomeShortcut.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.home; 2 | 3 | import com.taobao.zeus.web.platform.client.theme.ResourcesTool; 4 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 5 | 6 | public class HomeShortcut extends Shortcut{ 7 | 8 | public HomeShortcut(){ 9 | super("welcome", "首页"); 10 | setIcon(ResourcesTool.iconResources.home()); 11 | } 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/home/HomeWidget.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.home; 2 | 3 | import com.google.gwt.dom.client.IFrameElement; 4 | import com.google.gwt.user.client.DOM; 5 | import com.google.gwt.user.client.ui.Widget; 6 | 7 | public class HomeWidget extends Widget{ 8 | 9 | public HomeWidget(){ 10 | setElement(DOM.createIFrame()); 11 | } 12 | 13 | public void setContent(String html){ 14 | fillIframe((IFrameElement)getElement().cast(), html); 15 | } 16 | 17 | private final native void fillIframe(IFrameElement iframe, String content) /*-{ 18 | var doc = iframe.document; 19 | 20 | if(iframe.contentDocument) 21 | doc = iframe.contentDocument; // For NS6 22 | else if(iframe.contentWindow) 23 | doc = iframe.contentWindow.document; // For IE5.5 and IE6 24 | 25 | // Put the content in the iframe 26 | doc.open(); 27 | doc.writeln(content); 28 | doc.close(); 29 | }-*/; 30 | } 31 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/report/ReportApp.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.report; 2 | 3 | import com.taobao.zeus.web.platform.client.app.Application; 4 | import com.taobao.zeus.web.platform.client.app.PlacePath.App; 5 | import com.taobao.zeus.web.platform.client.app.PlacePath; 6 | import com.taobao.zeus.web.platform.client.app.PlatformPlace; 7 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 8 | import com.taobao.zeus.web.platform.client.util.Presenter; 9 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 10 | 11 | public class ReportApp implements Application{ 12 | 13 | private ReportPresenter presenter; 14 | private ReportShortcut shortcut=new ReportShortcut(); 15 | private PlatformContext platformContext; 16 | public ReportApp(PlatformContext context){ 17 | this.platformContext=context; 18 | presenter=new ReportPresenterImpl(context); 19 | } 20 | @Override 21 | public Shortcut getShortcut() { 22 | return shortcut; 23 | } 24 | 25 | @Override 26 | public PlatformContext getPlatformContext() { 27 | return platformContext; 28 | } 29 | 30 | @Override 31 | public Presenter getPresenter() { 32 | return presenter; 33 | } 34 | @Override 35 | public PlatformPlace getPlace() { 36 | return new PlacePath().toApp(App.Report).create(); 37 | } 38 | 39 | public static final String TAG="report"; 40 | } 41 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/report/ReportPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.report; 2 | 3 | import com.taobao.zeus.web.platform.client.util.Presenter; 4 | 5 | public interface ReportPresenter extends Presenter{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/report/ReportPresenterImpl.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.report; 2 | 3 | import com.google.gwt.user.client.ui.HasWidgets; 4 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 5 | 6 | public class ReportPresenterImpl implements ReportPresenter{ 7 | 8 | private ReportView reportView; 9 | private PlatformContext context; 10 | public ReportPresenterImpl(PlatformContext context){ 11 | this.context=context; 12 | reportView=new ReportViewImpl(this); 13 | } 14 | @Override 15 | public void go(HasWidgets hasWidgets) { 16 | hasWidgets.add(reportView.asWidget()); 17 | } 18 | 19 | @Override 20 | public PlatformContext getPlatformContext() { 21 | return context; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/report/ReportShortcut.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.report; 2 | 3 | import com.taobao.zeus.web.platform.client.theme.ResourcesTool; 4 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 5 | 6 | public class ReportShortcut extends Shortcut{ 7 | 8 | 9 | public ReportShortcut() { 10 | super("report", "统计报表"); 11 | setIcon(ResourcesTool.iconResources.report()); 12 | } 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/report/ReportView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.report; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | 5 | public interface ReportView extends IsWidget{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/schedule/ScheduleApp.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.schedule; 2 | 3 | import com.taobao.zeus.web.platform.client.app.Application; 4 | import com.taobao.zeus.web.platform.client.app.PlacePath; 5 | import com.taobao.zeus.web.platform.client.app.PlatformPlace; 6 | import com.taobao.zeus.web.platform.client.app.PlacePath.App; 7 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 8 | import com.taobao.zeus.web.platform.client.util.Presenter; 9 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 10 | 11 | public class ScheduleApp implements Application{ 12 | 13 | private SchedulePresenter presenter; 14 | private PlatformContext platformContext; 15 | private ScheduleShortcut shortcut=new ScheduleShortcut(); 16 | public ScheduleApp(PlatformContext context){ 17 | this.platformContext=context; 18 | presenter=new SchedulePresenterImpl(context); 19 | } 20 | @Override 21 | public Shortcut getShortcut() { 22 | return shortcut; 23 | } 24 | 25 | @Override 26 | public PlatformContext getPlatformContext() { 27 | return platformContext; 28 | } 29 | 30 | 31 | @Override 32 | public Presenter getPresenter() { 33 | return presenter; 34 | } 35 | @Override 36 | public PlatformPlace getPlace() { 37 | return new PlacePath().toApp(App.Schedule).create(); 38 | } 39 | 40 | public static final String TAG="schedule"; 41 | } 42 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/schedule/SchedulePresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.schedule; 2 | 3 | import com.taobao.zeus.web.platform.client.module.jobdisplay.JobDisplayPresenter; 4 | import com.taobao.zeus.web.platform.client.module.jobmanager.JobManagerPresenter; 5 | import com.taobao.zeus.web.platform.client.util.Presenter; 6 | 7 | public interface SchedulePresenter extends Presenter{ 8 | 9 | JobManagerPresenter getJobManagerPresenter(); 10 | 11 | JobDisplayPresenter getJobDisplayPresenter(); 12 | } 13 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/schedule/ScheduleShortcut.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.schedule; 2 | 3 | import com.taobao.zeus.web.platform.client.theme.ResourcesTool; 4 | import com.taobao.zeus.web.platform.client.widget.Shortcut; 5 | 6 | public class ScheduleShortcut extends Shortcut{ 7 | 8 | public ScheduleShortcut() { 9 | super("schedule","调度中心"); 10 | setIcon(ResourcesTool.iconResources.schedule()); 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/schedule/ScheduleView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.schedule; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | 5 | public interface ScheduleView extends IsWidget{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/app/schedule/ScheduleViewImpl.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.app.schedule; 2 | 3 | import com.google.gwt.user.client.ui.Widget; 4 | import com.sencha.gxt.core.client.util.Margins; 5 | import com.sencha.gxt.widget.core.client.ContentPanel; 6 | import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer; 7 | import com.sencha.gxt.widget.core.client.container.MarginData; 8 | import com.sencha.gxt.widget.core.client.container.SimpleContainer; 9 | import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData; 10 | 11 | public class ScheduleViewImpl implements ScheduleView { 12 | 13 | private SchedulePresenter presenter; 14 | public ScheduleViewImpl(SchedulePresenter presenter){ 15 | this.presenter=presenter; 16 | } 17 | private Widget widget; 18 | @Override 19 | public Widget asWidget() { 20 | if(widget==null){ 21 | final BorderLayoutContainer border = new BorderLayoutContainer(); 22 | BorderLayoutData west = new BorderLayoutData(); 23 | west.setMargins(new Margins(3)); 24 | west.setSplit(true); 25 | west.setSize(300); 26 | west.setCollapsible(true); 27 | west.setCollapseMini(true); 28 | ContentPanel sc=new ContentPanel(); 29 | sc.setHeaderVisible(false); 30 | SimpleContainer sc2=new SimpleContainer(); 31 | border.setWestWidget(sc, west); 32 | border.setCenterWidget(sc2, new MarginData(3)); 33 | presenter.getJobManagerPresenter().go(sc); 34 | presenter.getJobDisplayPresenter().go(sc2); 35 | widget=border; 36 | } 37 | return widget; 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/lib/codemirror/CodeMirror.css: -------------------------------------------------------------------------------- 1 | 2 | .CodeMirror { 3 | border:1px solid #eee; 4 | background-color:white; 5 | height:100%; 6 | font-family: MONACO !important; 7 | line-height:1.3; 8 | font-size:14px; 9 | } 10 | .CodeMirror-scroll { 11 | height:100%; 12 | } 13 | .activeline {background: #e8f2ff !important;} -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/lib/codemirror/CodeMirrors.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.lib.codemirror; 2 | 3 | import com.google.gwt.dom.client.Element; 4 | 5 | public class CodeMirrors { 6 | 7 | public static native void runMode(String text,String mode,Element output)/*-{ 8 | if(text!=null){ 9 | $wnd.CodeMirror.runMode(text,mode,output); 10 | } 11 | }-*/; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/AsyncTreeGridDropTarget.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager; 2 | 3 | import com.sencha.gxt.dnd.core.client.DndDropEvent; 4 | import com.sencha.gxt.dnd.core.client.TreeGridDropTarget; 5 | import com.sencha.gxt.dnd.core.client.DND.Feedback; 6 | import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; 7 | 8 | public class AsyncTreeGridDropTarget extends TreeGridDropTarget { 9 | 10 | public AsyncTreeGridDropTarget(TreeGrid treeGrid) { 11 | super(treeGrid); 12 | setAllowSelfAsSource(true); 13 | setFeedback(Feedback.APPEND); 14 | } 15 | 16 | public void proxySuperDragDrop(DndDropEvent event) { 17 | super.onDragDrop(event); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/FileManagerPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager; 2 | 3 | import com.taobao.zeus.web.platform.client.util.Presenter; 4 | import com.taobao.zeus.web.platform.client.util.place.PlaceHandler; 5 | 6 | public interface FileManagerPresenter extends Presenter,PlaceHandler{ 7 | 8 | public static final String TAG="Document"; 9 | 10 | boolean isEnableCreate(); 11 | 12 | boolean isEnableDelete(); 13 | 14 | boolean isEnableEditName(); 15 | 16 | boolean isEnableOpen(); 17 | 18 | void onCollapse(); 19 | 20 | void onCreate(boolean folder,String suffix); 21 | 22 | void onDelete(); 23 | 24 | void onEditFileNameComplete(FileModel file); 25 | 26 | void onEditName(); 27 | 28 | void onExpand(); 29 | 30 | void onOpen(); 31 | 32 | void onSelect(FileModel fileModel); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/FileManagerView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.ui.IsWidget; 6 | import com.sencha.gxt.data.shared.TreeStore; 7 | 8 | public interface FileManagerView extends IsWidget{ 9 | 10 | public void collapse(); 11 | 12 | public void editName(FileModel childFileModel); 13 | 14 | public void expand(); 15 | 16 | public FileModel getSelectedItem(); 17 | 18 | public List getSelectedItems(); 19 | 20 | public void selectFileModel(FileModel fileModel); 21 | 22 | public TreeStore getMyTreeStore(); 23 | 24 | public void setMyActivity(); 25 | 26 | public void setSharedActivity(); 27 | } 28 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/FileManagerViewImpl.ui.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/FileModelFactory.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager; 2 | 3 | import com.google.web.bindery.autobean.shared.AutoBean; 4 | import com.google.web.bindery.autobean.shared.AutoBeanFactory; 5 | 6 | public interface FileModelFactory extends AutoBeanFactory { 7 | 8 | // AutoBean fileModel(); 9 | } 10 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/FileModelProperties.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Sencha GXT 3.0.0b - Sencha for GWT 3 | * Copyright(c) 2007-2012, Sencha, Inc. 4 | * licensing@sencha.com 5 | * 6 | * http://www.sencha.com/products/gxt/license/ 7 | */ 8 | package com.taobao.zeus.web.platform.client.module.filemanager; 9 | 10 | import java.util.Date; 11 | 12 | import com.google.gwt.editor.client.Editor.Path; 13 | import com.sencha.gxt.core.client.ValueProvider; 14 | import com.sencha.gxt.data.shared.ModelKeyProvider; 15 | import com.sencha.gxt.data.shared.PropertyAccess; 16 | 17 | public interface FileModelProperties extends PropertyAccess { 18 | 19 | @Path("id") 20 | ModelKeyProvider key(); 21 | 22 | ValueProvider folder(); 23 | 24 | ValueProvider modifiedDate(); 25 | 26 | ValueProvider name(); 27 | 28 | //ValueProvider size(); 29 | 30 | } 31 | 32 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/OpenFileEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager; 2 | 3 | import com.google.gwt.event.shared.EventHandler; 4 | import com.google.gwt.event.shared.GwtEvent; 5 | import com.taobao.zeus.web.platform.client.module.filemanager.OpenFileEvent.OpenFileHandler; 6 | public class OpenFileEvent extends GwtEvent{ 7 | public static interface OpenFileHandler extends EventHandler{ 8 | void onOpenFile(OpenFileEvent event); 9 | } 10 | private final FileModel model; 11 | public static Type TYPE=new Type(); 12 | public OpenFileEvent(FileModel model){ 13 | this.model=model; 14 | } 15 | 16 | @Override 17 | protected void dispatch(OpenFileHandler handler) { 18 | handler.onOpenFile(this); 19 | } 20 | 21 | @Override 22 | public Type getAssociatedType() { 23 | return TYPE; 24 | } 25 | 26 | public FileModel getModel() { 27 | return model; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/Images.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.filemanager.images; 2 | 3 | import com.google.gwt.core.client.GWT; 4 | import com.google.gwt.resources.client.ClientBundle; 5 | import com.google.gwt.resources.client.ImageResource; 6 | 7 | public class Images { 8 | 9 | public interface FileImageResources extends ClientBundle { 10 | ImageResource arrow_in(); 11 | 12 | ImageResource arrow_out(); 13 | 14 | 15 | ImageResource cross(); 16 | 17 | 18 | ImageResource folder_add(); 19 | 20 | ImageResource page_white(); 21 | 22 | ImageResource page_white_add(); 23 | 24 | ImageResource script(); 25 | 26 | ImageResource script_add(); 27 | 28 | ImageResource textfield_rename(); 29 | 30 | ImageResource bullet_go(); 31 | 32 | } 33 | 34 | private static FileImageResources imageResources; 35 | 36 | public static FileImageResources getImageResources() { 37 | if (imageResources == null) { 38 | imageResources = GWT.create(FileImageResources.class); 39 | } 40 | return imageResources; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/arrow_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/arrow_in.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/arrow_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/arrow_out.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/bullet_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/bullet_go.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/cross.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/folder_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/folder_add.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/page_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/page_white.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/page_white_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/page_white_add.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/script.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/script_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/script_add.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/textfield_rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/filemanager/images/textfield_rename.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/guide/GuideTip.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.guide; 2 | 3 | import com.google.gwt.safehtml.shared.SafeHtmlUtils; 4 | import com.google.gwt.user.client.ui.Widget; 5 | import com.sencha.gxt.core.client.Style.Side; 6 | import com.sencha.gxt.widget.core.client.tips.ToolTip; 7 | 8 | public class GuideTip extends ToolTip { 9 | 10 | public GuideTip(Widget target) { 11 | super(target); 12 | setClosable(true); 13 | getToolTipConfig().setDismissDelay(0); 14 | } 15 | 16 | public void initTarget(final Widget target) { 17 | this.target = target; 18 | 19 | } 20 | 21 | public void setTitleHtml(String html) { 22 | titleHtml = html; 23 | } 24 | 25 | public void setTitleText(String text) { 26 | titleHtml = SafeHtmlUtils.htmlEscape(text); 27 | } 28 | 29 | public void setBodyHtml(String html) { 30 | bodyHtml = html; 31 | } 32 | 33 | public void setBodyText(String text) { 34 | bodyHtml = SafeHtmlUtils.htmlEscape(text); 35 | } 36 | 37 | public void setAnchor(Side side) { 38 | toolTipConfig.setAnchor(side); 39 | } 40 | 41 | private int offsetX = 0; 42 | private int offsetY = 0; 43 | 44 | public void setOffset(int x, int y) { 45 | offsetX = x; 46 | offsetY = y; 47 | } 48 | 49 | @Override 50 | public void showAt(int x, int y) { 51 | super.showAt(x + offsetX, y + offsetY); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/JobDisplayPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay; 2 | 3 | import com.taobao.zeus.web.platform.client.util.Presenter; 4 | import com.taobao.zeus.web.platform.client.util.place.PlaceHandler; 5 | 6 | public interface JobDisplayPresenter extends Presenter, PlaceHandler{ 7 | 8 | public static final String TAG = "jobdisplay"; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/JobDisplayView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupModel; 5 | import com.taobao.zeus.web.platform.client.module.jobmanager.JobModel; 6 | 7 | public interface JobDisplayView extends IsWidget{ 8 | 9 | 10 | public void display(JobModel job); 11 | 12 | public void display(GroupModel group); 13 | } 14 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/group/GroupPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay.group; 2 | 3 | import com.google.gwt.user.client.ui.HasWidgets; 4 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupModel; 5 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 6 | import com.taobao.zeus.web.platform.client.util.Presenter; 7 | 8 | public class GroupPresenter implements Presenter { 9 | 10 | private GroupView groupView=new GroupView(this); 11 | private GroupModel groupModel; 12 | 13 | private PlatformContext context; 14 | public GroupPresenter(PlatformContext context){ 15 | this.context=context; 16 | } 17 | 18 | public PlatformContext getPlatformContext(){ 19 | return context; 20 | } 21 | 22 | 23 | public void displayEditGroup(){ 24 | groupView.displayEditGroup(); 25 | } 26 | 27 | public void display(GroupModel group){ 28 | this.groupModel=group; 29 | groupView.display(); 30 | } 31 | 32 | public void displayOverall(){ 33 | groupView.displayOverall(); 34 | } 35 | 36 | public void displayRunning(){ 37 | groupView.displayRunning(); 38 | } 39 | public void displayManual(){ 40 | groupView.displayManual(); 41 | } 42 | 43 | public GroupModel getGroupModel(){ 44 | return groupModel; 45 | } 46 | @Override 47 | public void go(HasWidgets hasWidgets) { 48 | hasWidgets.add(groupView.asWidget()); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/group/GroupProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay.group; 2 | 3 | import com.sencha.gxt.core.client.ValueProvider; 4 | import com.sencha.gxt.data.shared.ModelKeyProvider; 5 | import com.sencha.gxt.data.shared.PropertyAccess; 6 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupModel; 7 | 8 | public interface GroupProperties extends PropertyAccess{ 9 | 10 | ModelKeyProvider key(); 11 | 12 | ValueProvider id(); 13 | ValueProvider name(); 14 | } 15 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/job/JobHistoryProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay.job; 2 | 3 | import java.util.Date; 4 | 5 | import com.google.gwt.editor.client.Editor.Path; 6 | import com.sencha.gxt.core.client.ValueProvider; 7 | import com.sencha.gxt.data.shared.ModelKeyProvider; 8 | import com.sencha.gxt.data.shared.PropertyAccess; 9 | 10 | public interface JobHistoryProperties extends PropertyAccess{ 11 | @Path("id") 12 | ModelKeyProvider key(); 13 | 14 | ValueProvider id(); 15 | 16 | ValueProvider name(); 17 | 18 | ValueProvider owner(); 19 | 20 | ValueProvider jobId(); 21 | 22 | ValueProvider status(); 23 | 24 | ValueProvider executeHost(); 25 | 26 | ValueProvider illustrate(); 27 | 28 | ValueProvider startTime(); 29 | 30 | ValueProvider endTime(); 31 | 32 | ValueProvider triggerType(); 33 | 34 | ValueProvider operator(); 35 | 36 | ValueProvider statisEndTime(); 37 | 38 | ValueProvider timeZone(); 39 | 40 | ValueProvider cycle(); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobdisplay/job/JobPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobdisplay.job; 2 | 3 | import com.google.gwt.user.client.ui.HasWidgets; 4 | import com.taobao.zeus.web.platform.client.module.jobmanager.JobModel; 5 | import com.taobao.zeus.web.platform.client.util.PlatformContext; 6 | import com.taobao.zeus.web.platform.client.util.Presenter; 7 | 8 | public class JobPresenter implements Presenter{ 9 | 10 | private JobView jobView=new JobView(this); 11 | 12 | private JobModel jobModel; 13 | 14 | private PlatformContext context; 15 | public JobPresenter(PlatformContext context){ 16 | this.context=context; 17 | } 18 | 19 | public void display(JobModel job){ 20 | this.jobModel=job; 21 | jobView.display(); 22 | } 23 | 24 | @Override 25 | public void go(HasWidgets hasWidgets) { 26 | hasWidgets.add(jobView.asWidget()); 27 | } 28 | 29 | public JobModel getJobModel() { 30 | return jobModel; 31 | } 32 | public void displayEditJob(){ 33 | jobView.displayEditJob(); 34 | } 35 | 36 | public void displayHistory(){ 37 | jobView.displayHistory(); 38 | } 39 | 40 | public void displayDepGraph(){ 41 | jobView.displayDepGraph(); 42 | } 43 | 44 | public PlatformContext getPlatformContext() { 45 | return context; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/JobManagerPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager; 2 | 3 | import com.taobao.zeus.web.platform.client.util.Presenter; 4 | import com.taobao.zeus.web.platform.client.util.place.PlaceHandler; 5 | 6 | public interface JobManagerPresenter extends Presenter, PlaceHandler{ 7 | 8 | public static final String TAG = "jobmanager"; 9 | 10 | public void onSelect(String providerKey); 11 | } 12 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/JobManagerView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | 5 | public interface JobManagerView extends IsWidget{ 6 | public JobTree getMyTreePanel(); 7 | public JobTree getAllTreePanel(); 8 | public boolean isMyTreeActive(); 9 | public void activeMyTreePanel(); 10 | public void activeAllTreePanel(); 11 | } 12 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/JobModelProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager; 2 | 3 | import java.util.Map; 4 | 5 | import com.google.gwt.editor.client.Editor.Path; 6 | import com.sencha.gxt.core.client.ValueProvider; 7 | import com.sencha.gxt.data.shared.ModelKeyProvider; 8 | import com.sencha.gxt.data.shared.PropertyAccess; 9 | 10 | public interface JobModelProperties extends PropertyAccess{ 11 | @Path("id") 12 | ModelKeyProvider key(); 13 | 14 | ValueProvider id(); 15 | 16 | ValueProvider name(); 17 | 18 | ValueProvider status(); 19 | 20 | ValueProvider> readyDependencies(); 21 | 22 | ValueProvider lastStatus(); 23 | } 24 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/TreeKeyProviderTool.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager; 2 | 3 | import com.sencha.gxt.data.shared.ModelKeyProvider; 4 | 5 | public class TreeKeyProviderTool { 6 | private static final ModelKeyProvider modelKeyProvider=new ModelKeyProvider() { 7 | public String getKey(GroupJobTreeModel item) { 8 | if(item.isJob()){ 9 | return "job-"+item.getId(); 10 | }else{ 11 | return "group-"+item.getId(); 12 | } 13 | } 14 | }; 15 | 16 | public static ModelKeyProvider getModelKeyProvider(){ 17 | return modelKeyProvider; 18 | } 19 | 20 | public static String genGroupProviderKey(String groupId){ 21 | return "group-"+groupId; 22 | } 23 | public static String genJobProviderKey(String jobId){ 24 | return "job-"+jobId; 25 | } 26 | 27 | public static boolean parseIsJob(String providerKey){ 28 | if(providerKey.startsWith("job-")){ 29 | return true; 30 | } 31 | return false; 32 | } 33 | public static String parseId(String providerKey){ 34 | return providerKey.substring(providerKey.indexOf("-")+1); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/event/TreeNodeSelectEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager.event; 2 | 3 | import com.taobao.zeus.web.platform.client.module.jobmanager.event.TreeNodeSelectEvent.TreeNodeSelectHandler; 4 | import com.google.gwt.event.shared.EventHandler; 5 | import com.google.gwt.event.shared.GwtEvent; 6 | 7 | public class TreeNodeSelectEvent extends GwtEvent{ 8 | 9 | public interface TreeNodeSelectHandler extends EventHandler{ 10 | public void onSelect(TreeNodeSelectEvent event); 11 | } 12 | 13 | public static Type type=new Type(); 14 | 15 | private String providerKey; 16 | 17 | public TreeNodeSelectEvent(String providerKey){ 18 | this.providerKey=providerKey; 19 | } 20 | 21 | 22 | @Override 23 | protected void dispatch(TreeNodeSelectHandler handler) { 24 | handler.onSelect(this); 25 | } 26 | 27 | @Override 28 | public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() { 29 | return type; 30 | } 31 | 32 | 33 | public String getProviderKey() { 34 | return providerKey; 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/Images.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.jobmanager.images; 2 | 3 | import com.google.gwt.core.shared.GWT; 4 | import com.google.gwt.resources.client.ClientBundle; 5 | import com.google.gwt.resources.client.ImageResource; 6 | 7 | public class Images{ 8 | 9 | public interface Bundle extends ClientBundle{ 10 | ImageResource job(); 11 | ImageResource leaf_group(); 12 | ImageResource folder_group(); 13 | } 14 | 15 | private static Bundle bundle=GWT.create(Bundle.class); 16 | 17 | public static Bundle getResources(){ 18 | return bundle; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/folder_group.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/folder_group.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/job.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/job.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/leaf_group.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/jobmanager/images/leaf_group.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/profile/ProfileModel.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.profile; 2 | 3 | import java.io.Serializable; 4 | import java.util.Map; 5 | 6 | public class ProfileModel implements Serializable{ 7 | private static final long serialVersionUID = 1L; 8 | private String uid; 9 | private Map hadoopConf; 10 | public String getUid() { 11 | return uid; 12 | } 13 | public void setUid(String uid) { 14 | this.uid = uid; 15 | } 16 | public Map getHadoopConf() { 17 | return hadoopConf; 18 | } 19 | public void setHadoopConf(Map hadoopConf) { 20 | this.hadoopConf = hadoopConf; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/TableManagerPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager; 2 | 3 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.PartitionModel; 4 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.TableModel; 5 | import com.taobao.zeus.web.platform.client.util.Presenter; 6 | 7 | public interface TableManagerPresenter extends Presenter { 8 | 9 | boolean isEnableDelete(); 10 | 11 | void onDelete(); 12 | 13 | void onSelect(TableModel fileModel); 14 | 15 | void loadDataPreview(PartitionModel selectedItem); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/TableManagerView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager; 2 | 3 | import com.google.gwt.user.client.ui.IsWidget; 4 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.PartitionModel; 5 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.TableModel; 6 | 7 | public interface TableManagerView extends IsWidget { 8 | 9 | public TableModel getSelectedItem(); 10 | 11 | public void selectFileModel(TableModel fileModel); 12 | 13 | public void loadDataPreview(PartitionModel selectedItem); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/TableManagerViewImpl.ui.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 15 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/TablePreviewModel.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | import com.taobao.zeus.web.platform.client.module.tablemanager.component.Tuple; 8 | 9 | /** 10 | * 表数据预览 11 | * 12 | * @author zhoufang 13 | * 14 | */ 15 | public class TablePreviewModel implements Serializable { 16 | private static final long serialVersionUID = 1L; 17 | 18 | private List headers = new ArrayList(); 19 | 20 | private List>> data = new ArrayList>>(); 21 | 22 | public List getHeaders() { 23 | return headers; 24 | } 25 | 26 | public void setHeaders(List headers) { 27 | this.headers = headers; 28 | } 29 | 30 | public List>> getData() { 31 | return data; 32 | } 33 | 34 | public void setData(List>> data) { 35 | this.data = data; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/component/Tuple.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager.component; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Tuple implements Serializable { 6 | 7 | private static final long serialVersionUID = 1L; 8 | private X x; 9 | private Y y; 10 | 11 | public Tuple() { 12 | x = null; 13 | y = null; 14 | }; 15 | 16 | public Tuple(X x, Y y) { 17 | this.x = x; 18 | this.y = y; 19 | } 20 | 21 | public X getX() { 22 | return x; 23 | } 24 | 25 | public Y getY() { 26 | return y; 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | return "[" + x.toString() + "," + y.toString() + "]"; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/model/PartitionModelProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager.model; 2 | 3 | import com.google.gwt.editor.client.Editor.Path; 4 | import com.sencha.gxt.core.client.ValueProvider; 5 | import com.sencha.gxt.data.shared.ModelKeyProvider; 6 | import com.sencha.gxt.data.shared.PropertyAccess; 7 | 8 | public interface PartitionModelProperties extends 9 | PropertyAccess { 10 | 11 | @Path("name") 12 | ModelKeyProvider key(); 13 | 14 | ValueProvider name(); 15 | 16 | ValueProvider path(); 17 | 18 | ValueProvider size(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/model/TableColumnModel.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager.model; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * @author gufei.wzy 2012-9-17 7 | */ 8 | 9 | public class TableColumnModel implements Serializable { 10 | private static final long serialVersionUID = 9154611086109470482L; 11 | private String name; 12 | private String type; 13 | private String desc; 14 | 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public void setName(String name) { 20 | this.name = name; 21 | } 22 | 23 | public String getType() { 24 | return type; 25 | } 26 | 27 | public void setType(String type) { 28 | this.type = type; 29 | } 30 | 31 | public String getDesc() { 32 | return desc; 33 | } 34 | 35 | public void setDesc(String desc) { 36 | this.desc = desc; 37 | } 38 | } -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/model/TableColumnModelProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager.model; 2 | 3 | import com.google.gwt.editor.client.Editor.Path; 4 | import com.sencha.gxt.core.client.ValueProvider; 5 | import com.sencha.gxt.data.shared.ModelKeyProvider; 6 | import com.sencha.gxt.data.shared.PropertyAccess; 7 | 8 | public interface TableColumnModelProperties extends 9 | PropertyAccess { 10 | 11 | @Path("name") 12 | ModelKeyProvider key(); 13 | 14 | ValueProvider name(); 15 | 16 | ValueProvider type(); 17 | 18 | ValueProvider desc(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/tablemanager/model/TableModelProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.tablemanager.model; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | 6 | import com.google.gwt.editor.client.Editor.Path; 7 | import com.sencha.gxt.core.client.ValueProvider; 8 | import com.sencha.gxt.data.shared.ModelKeyProvider; 9 | import com.sencha.gxt.data.shared.PropertyAccess; 10 | 11 | public interface TableModelProperties extends PropertyAccess { 12 | 13 | @Path("name") 14 | ModelKeyProvider key(); 15 | 16 | ValueProvider dbName(); 17 | 18 | ValueProvider createDate(); 19 | 20 | ValueProvider name(); 21 | 22 | ValueProvider path(); 23 | 24 | ValueProvider comment(); 25 | 26 | ValueProvider owner(); 27 | 28 | ValueProvider> cols(); 29 | 30 | ValueProvider> partitions(); 31 | 32 | ValueProvider fieldDelim(); 33 | 34 | ValueProvider lineDelim(); 35 | 36 | ValueProvider serDeClass(); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/WordPresenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.word; 2 | 3 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 4 | import com.taobao.zeus.web.platform.client.util.Presenter; 5 | import com.taobao.zeus.web.platform.client.util.async.PlatformAsyncCallback; 6 | import com.taobao.zeus.web.platform.client.util.place.PlaceHandler; 7 | 8 | public interface WordPresenter extends Presenter,PlaceHandler{ 9 | 10 | public static final String TAG="Word"; 11 | /** 12 | * 打开一个文档 13 | * 如果这个文档已经打开,则将这个文档设置为焦点 14 | * @param fm 15 | * @param callback 16 | */ 17 | void open(String fileId,PlatformAsyncCallback callback); 18 | 19 | /** 20 | * 更新已经打开的文档状态记录 21 | * @param t 22 | */ 23 | public void updateLastOpen(); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/WordView.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.word; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.ui.IsWidget; 6 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 7 | 8 | public interface WordView extends IsWidget{ 9 | /** 10 | * 打开一个文档 11 | * 如果已经打开,则将这个文档设置为焦点 12 | * @param fm 13 | */ 14 | void open(FileModel fm); 15 | 16 | boolean contain(String fileId); 17 | 18 | void updateFileName(FileModel model); 19 | 20 | List getOpenedDocs(); 21 | } 22 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/Images.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.word.images; 2 | 3 | import com.google.gwt.core.client.GWT; 4 | import com.google.gwt.resources.client.ClientBundle; 5 | import com.google.gwt.resources.client.ImageResource; 6 | 7 | public class Images { 8 | 9 | public interface WordImageResources extends ClientBundle { 10 | 11 | ImageResource traffic_green(); 12 | ImageResource traffic_red(); 13 | ImageResource processingIcon(); 14 | ImageResource download(); 15 | 16 | } 17 | 18 | private static WordImageResources imageResources; 19 | 20 | public static WordImageResources getImageResources() { 21 | if (imageResources == null) { 22 | imageResources = GWT.create(WordImageResources.class); 23 | } 24 | return imageResources; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/download.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/processingIcon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/processingIcon.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_green.origin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_green.origin.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_green.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_red.origin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_red.origin.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/module/word/images/traffic_red.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/module/word/model/DebugHistoryProperties.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.module.word.model; 2 | 3 | import java.util.Date; 4 | 5 | import com.google.gwt.editor.client.Editor.Path; 6 | import com.sencha.gxt.core.client.ValueProvider; 7 | import com.sencha.gxt.data.shared.ModelKeyProvider; 8 | import com.sencha.gxt.data.shared.PropertyAccess; 9 | import com.taobao.zeus.web.platform.client.module.word.model.DebugHistoryModel.JobRunType; 10 | import com.taobao.zeus.web.platform.client.module.word.model.DebugHistoryModel.Status; 11 | 12 | public interface DebugHistoryProperties extends PropertyAccess { 13 | 14 | @Path("id") 15 | ModelKeyProvider key(); 16 | 17 | ValueProvider id(); 18 | 19 | ValueProvider fileId(); 20 | 21 | ValueProvider startTime(); 22 | 23 | ValueProvider endTime(); 24 | 25 | ValueProvider executeHost(); 26 | 27 | ValueProvider gmtCreate(); 28 | 29 | ValueProvider gmtModified(); 30 | 31 | ValueProvider status(); 32 | 33 | ValueProvider script(); 34 | 35 | ValueProvider jobRunType(); 36 | 37 | ValueProvider log(); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/ResourcesTool.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.theme; 2 | 3 | import com.google.gwt.core.client.GWT; 4 | import com.taobao.zeus.web.platform.client.theme.image.IconResources; 5 | 6 | public class ResourcesTool { 7 | 8 | public static IconResources iconResources=GWT.create(IconResources.class); 9 | } 10 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/IconResources.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.theme.image; 2 | 3 | import com.google.gwt.resources.client.ClientBundle; 4 | import com.google.gwt.resources.client.ImageResource; 5 | 6 | public interface IconResources extends ClientBundle { 7 | 8 | ImageResource home(); 9 | 10 | ImageResource schedule(); 11 | 12 | ImageResource document(); 13 | 14 | 15 | ImageResource report(); 16 | 17 | ImageResource terminal(); 18 | 19 | ImageResource icon_run(); 20 | ImageResource icon_sync(); 21 | ImageResource icon_extends(); 22 | ImageResource icon_config(); 23 | ImageResource icon_upload(); 24 | ImageResource icon_jump(); 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/document.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/document.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/home.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/home.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_config.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_extends.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_extends.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_jump.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_run.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_sync.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/icon_upload.png -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/report.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/report.jpg -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/schedule.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/schedule.jpg -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/terminal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/image/terminal.jpg -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/ShortcutCell.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Sencha GXT 3.0.0b - Sencha for GWT 3 | * Copyright(c) 2007-2012, Sencha, Inc. 4 | * licensing@sencha.com 5 | * 6 | * http://www.sencha.com/products/gxt/license/ 7 | */ 8 | 9 | 10 | .select{ 11 | background-color:#D0D0D0; 12 | border-radius:4px 4px 4px 4px; 13 | box-shadow:1px 1px 1px #999999 inset; 14 | padding-top:3px; 15 | } -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/ShortcutCellDefaultAppearance.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.theme.shortcut; 2 | 3 | import com.google.gwt.core.client.GWT; 4 | import com.google.gwt.resources.client.ClientBundle; 5 | import com.taobao.zeus.web.platform.client.widget.ShortcutCell.ShortcutCellAppearance; 6 | import com.sencha.gxt.theme.base.client.button.ButtonCellDefaultAppearance; 7 | import com.sencha.gxt.theme.base.client.frame.TableFrame; 8 | import com.sencha.gxt.theme.base.client.frame.TableFrame.TableFrameResources; 9 | 10 | public class ShortcutCellDefaultAppearance extends ButtonCellDefaultAppearance implements 11 | ShortcutCellAppearance { 12 | 13 | public interface ShortcutCellResources extends ButtonCellResources, ClientBundle { 14 | @Source({"com/sencha/gxt/theme/base/client/button/ButtonCell.css", "ShortcutCell.css"}) 15 | @Override 16 | ShortcutCellStyle style(); 17 | } 18 | 19 | public interface ShortcutCellStyle extends ButtonCellStyle { 20 | String select(); 21 | } 22 | 23 | public ShortcutCellDefaultAppearance() { 24 | super(GWT. create(ShortcutCellResources.class), 25 | GWT. create(ButtonCellTemplates.class), new TableFrame( 26 | GWT. create(ShortcutTableFrameResources.class))); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/ShortcutTableFrame.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Sencha GXT 3.0.0b - Sencha for GWT 3 | * Copyright(c) 2007-2012, Sencha, Inc. 4 | * licensing@sencha.com 5 | * 6 | * http://www.sencha.com/products/gxt/license/ 7 | */ 8 | .contentArea {} 9 | .frame {} 10 | .left {} 11 | .right {} 12 | .topLeft {} 13 | .top {} 14 | .topRight {} 15 | .bottomLeft {} 16 | .bottom {} 17 | .bottomRight {} 18 | .focus {} 19 | 20 | .content { 21 | color: black; 22 | padding: 3px; 23 | } 24 | 25 | .over .content { 26 | color: black; 27 | text-decoration:underline; 28 | padding: 3px; 29 | } 30 | 31 | .pressed .content { 32 | color: black; 33 | text-decoration:underline; 34 | padding: 2px; 35 | border: 1px dashed white; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/background.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/backgroundOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/backgroundOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/backgroundPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/backgroundPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomLeftPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/bottomRightPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/leftPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/rightPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topLeftPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightOverBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightOverBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightPressedBorder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/java/com/taobao/zeus/web/platform/client/theme/shortcut/topRightPressedBorder.gif -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/Callback.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | public interface Callback { 4 | 5 | public void callback(); 6 | } 7 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/GWTEnvironment.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | import com.google.gwt.user.client.Window; 4 | 5 | public class GWTEnvironment { 6 | // 可以开启以下代码,用户判断当前环境 7 | // public static boolean isDaily(){ 8 | // return Window.Location.getHost().contains("zeus.daily.taobao.net"); 9 | // } 10 | // public static boolean isOnline(){ 11 | // return Window.Location.getHost().contains("zeus.taobao.com"); 12 | // } 13 | 14 | public static String getHomeTemplateId(){ 15 | //TODO 请在开发中心创建文件,然后将文件id纪录于此,默认-1 16 | return "-1"; 17 | } 18 | 19 | public static String getNoticeTemplateId(){ 20 | //TODO 请在开发中心创建文件,然后将文件id纪录于此,默认-1 21 | return "-1"; 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/GwtException.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | public class GwtException extends Exception{ 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public GwtException() { 8 | } 9 | public GwtException(String msg){ 10 | super(msg); 11 | } 12 | public GwtException(String msg,Throwable t){ 13 | super(msg, t); 14 | } 15 | public GwtException(Throwable t){ 16 | super(t); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/PlatformContext.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | import com.taobao.zeus.web.platform.client.util.filesystem.FileSystem; 4 | 5 | public class PlatformContext { 6 | 7 | private ZUser user; 8 | private final PlatformBus platformBus=new PlatformBus(); 9 | private final FileSystem fileSystem=new FileSystem(this); 10 | 11 | public PlatformContext(ZUser user){ 12 | this.user=user; 13 | } 14 | 15 | public PlatformBus getPlatformBus() { 16 | return platformBus; 17 | } 18 | public FileSystem getFileSystem() { 19 | return fileSystem; 20 | } 21 | 22 | public ZUser getUser() { 23 | return user; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/Presenter.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | import com.google.gwt.user.client.ui.HasWidgets; 4 | 5 | /** 6 | * Base interface for "mini applications" or "desklets" that are displayed on 7 | * the desktop. It defines the basic capability required by all mini application 8 | * presenters so that they can be displayed and managed by the desktop. 9 | */ 10 | public interface Presenter { 11 | 12 | /** 13 | * Adds the view managed by this presenter to the user interface. 14 | * 15 | * @param hasWidgets the user interface 16 | */ 17 | void go(HasWidgets hasWidgets); 18 | 19 | PlatformContext getPlatformContext(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/Refreshable.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | public interface Refreshable { 4 | 5 | void refresh(T t); 6 | } 7 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/StartEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | import com.google.gwt.event.shared.EventHandler; 4 | import com.google.gwt.event.shared.GwtEvent; 5 | 6 | public class StartEvent extends GwtEvent{ 7 | 8 | public interface StartEventHandler extends EventHandler{ 9 | public void start(); 10 | } 11 | 12 | public static Type TYPE=new Type(); 13 | @Override 14 | public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() { 15 | return TYPE; 16 | } 17 | 18 | @Override 19 | protected void dispatch(StartEventHandler handler) { 20 | handler.start(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/ZUser.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util; 2 | 3 | import java.io.Serializable; 4 | 5 | public class ZUser implements Serializable{ 6 | 7 | private static final long serialVersionUID = 1L; 8 | private String uid; 9 | private String name; 10 | private boolean Super=false; 11 | public boolean isSuper() { 12 | return Super; 13 | } 14 | public void setSuper(boolean super1) { 15 | Super = super1; 16 | } 17 | public String getName() { 18 | return name; 19 | } 20 | public void setName(String name) { 21 | this.name = name; 22 | } 23 | public String getUid() { 24 | return uid; 25 | } 26 | public void setUid(String uid) { 27 | this.uid = uid; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/async/AbstractAsyncCallback.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.async; 2 | 3 | import com.google.gwt.user.client.Window; 4 | import com.google.gwt.user.client.rpc.AsyncCallback; 5 | 6 | public abstract class AbstractAsyncCallback implements AsyncCallback{ 7 | 8 | @Override 9 | public void onFailure(Throwable caught) { 10 | Window.alert(caught.getMessage()); 11 | caught.printStackTrace(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/async/CallbackUtils.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.async; 2 | 3 | public class CallbackUtils { 4 | 5 | public static PlatformAsyncCallback BLANK=new PlatformAsyncCallback() { 6 | @Override 7 | public void callback(Object o) { 8 | return; 9 | } 10 | }; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/async/PlatformAsyncCallback.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.async; 2 | 3 | import com.google.gwt.user.client.Window; 4 | import com.google.gwt.user.client.rpc.AsyncCallback; 5 | 6 | public abstract class PlatformAsyncCallback{ 7 | 8 | public abstract void callback(T t); 9 | 10 | public void exception(Exception e){ 11 | Window.alert(e.getCause().getMessage()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/filesystem/FileUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.filesystem; 2 | 3 | import com.google.gwt.event.shared.EventHandler; 4 | import com.google.gwt.event.shared.GwtEvent; 5 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 6 | import com.taobao.zeus.web.platform.client.util.filesystem.FileUpdateEvent.FileUpdateHandler;; 7 | 8 | public class FileUpdateEvent extends GwtEvent{ 9 | public static interface FileUpdateHandler extends EventHandler{ 10 | void onFileUpdate(FileUpdateEvent event); 11 | } 12 | public static Type TYPE=new Type(); 13 | 14 | private FileModel model; 15 | public FileUpdateEvent(FileModel model){ 16 | this.model=model; 17 | } 18 | 19 | @Override 20 | protected void dispatch(FileUpdateHandler handler) { 21 | handler.onFileUpdate(this); 22 | } 23 | 24 | @Override 25 | public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() { 26 | return TYPE; 27 | } 28 | 29 | public FileModel getModel() { 30 | return model; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/place/PlaceHandler.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.place; 2 | 3 | public interface PlaceHandler { 4 | 5 | public void handle(PlatformPlaceChangeEvent event); 6 | 7 | public String getHandlerTag(); 8 | } 9 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/template/TemplateResources.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.util.template; 2 | 3 | import com.google.gwt.resources.client.ClientBundle; 4 | import com.google.gwt.resources.client.TextResource; 5 | 6 | public interface TemplateResources extends ClientBundle{ 7 | @Source("home.html") 8 | TextResource home(); 9 | @Source("notice.html") 10 | TextResource notice(); 11 | } 12 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/template/home.html: -------------------------------------------------------------------------------- 1 | 欢迎使用宙斯系统
2 | 看到此页面,说明你还没有定制自己Home主页,按照以下步骤可以定制Home页面
3 | 1.在开发中心创建一个文档,纪录下该文档的id
4 | 2.进入代码  com.taobao.zeus.web.platform.client.util.GWTEnvironment 将id填入相应TODO中(多环境下需要考虑环境判断)
5 | 3.重新部署代码发布
6 | 4.动态修改文档中心文件,即可实时修改此处内容,此内容支持html格式
-------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/util/template/notice.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 此处一般用于展示最新动态,版本更新内容等等
5 | 上线前请务必按照以下步骤操作:
6 | 1.在开发中心创建一个文档,纪录下该文档的id
7 | 2.进入代码  com.taobao.zeus.web.platform.client.util.GWTEnvironment 将id填入相应TODO中(多环境下需要考虑环境判断)
8 | 3.重新部署代码发布
9 | 4.动态修改文档中心文件,即可实时修改此处内容,此内容支持html格式
10 | 内容需要使用以下模板作为开头:
11 |
12 | <!--OK-->
13 | <!--width=400-->
14 | <!--height=100-->
15 |  
16 | 模板的含义相信你懂的
-------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/widget/MyRowExpander.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.taobao.zeus.web.platform.client.widget; 5 | 6 | import com.google.gwt.cell.client.Cell; 7 | import com.sencha.gxt.core.client.IdentityValueProvider; 8 | import com.sencha.gxt.core.client.dom.XElement; 9 | import com.sencha.gxt.widget.core.client.grid.Grid; 10 | import com.sencha.gxt.widget.core.client.grid.RowExpander; 11 | 12 | /** 13 | * @author gufei.wzy 2012-9-29 14 | */ 15 | 16 | public class MyRowExpander extends RowExpander { 17 | 18 | private Grid grid; 19 | 20 | public MyRowExpander(IdentityValueProvider valueProvider, Grid grid, 21 | Cell contentCell) { 22 | super(valueProvider, contentCell); 23 | this.grid = grid; 24 | } 25 | 26 | public void toggleExpand(int index) { 27 | XElement row = XElement.as(this.grid.getView().getRow(index)); 28 | if (row != null) { 29 | if (isExpanded(row)) 30 | collapseRow(row); 31 | else 32 | expandRow(row); 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/widget/Shortcut.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Sencha GXT 3.0.0b - Sencha for GWT 3 | * Copyright(c) 2007-2012, Sencha, Inc. 4 | * licensing@sencha.com 5 | * 6 | * http://www.sencha.com/products/gxt/license/ 7 | */ 8 | package com.taobao.zeus.web.platform.client.widget; 9 | 10 | import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; 11 | import com.sencha.gxt.widget.core.client.button.TextButton; 12 | 13 | /** 14 | * A desktop shortcut. 15 | */ 16 | public abstract class Shortcut extends TextButton{ 17 | 18 | /** 19 | * Creates a new shortcut. 20 | * 21 | * @param id 22 | * the shortcut id 23 | * @param text 24 | * the shortcut text 25 | */ 26 | public Shortcut(String id, String text) { 27 | super(new ShortcutCell()); 28 | setIconAlign(IconAlign.TOP); 29 | setId(id); 30 | setText(text); 31 | setWidth(70); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/client/widget/TitledCell.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.client.widget; 2 | 3 | import com.google.gwt.cell.client.AbstractCell; 4 | import com.google.gwt.safehtml.shared.SafeHtmlBuilder; 5 | 6 | public class TitledCell extends AbstractCell { 7 | @Override 8 | public void render(com.google.gwt.cell.client.Cell.Context context, 9 | String value, SafeHtmlBuilder sb) { 10 | value = value == null ? "" : value; 11 | sb.appendHtmlConstant("") 12 | .appendHtmlConstant(value).appendHtmlConstant(""); 13 | } 14 | } -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/server/rpc/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.server.rpc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.beans.factory.annotation.Qualifier; 8 | 9 | import com.taobao.zeus.store.Super; 10 | import com.taobao.zeus.store.UserManager; 11 | import com.taobao.zeus.store.mysql.persistence.ZeusUser; 12 | import com.taobao.zeus.web.LoginUser; 13 | import com.taobao.zeus.web.platform.client.util.ZUser; 14 | import com.taobao.zeus.web.platform.shared.rpc.UserService; 15 | 16 | public class UserServiceImpl implements UserService{ 17 | @Autowired 18 | private UserManager userManager; 19 | @Override 20 | public ZUser getUser() { 21 | ZeusUser u= LoginUser.getUser(); 22 | ZUser zu=new ZUser(); 23 | zu.setName(u.getName()); 24 | zu.setUid(u.getUid()); 25 | zu.setSuper(Super.getSupers().contains(u.getUid())); 26 | return zu; 27 | } 28 | 29 | @Override 30 | public List getAllUsers() { 31 | List result=new ArrayList(); 32 | List list=userManager.getAllUsers(); 33 | for(ZeusUser u:list){ 34 | ZUser zu=new ZUser(); 35 | zu.setName(u.getName()); 36 | zu.setUid(u.getUid()); 37 | result.add(zu); 38 | } 39 | return result; 40 | } 41 | 42 | 43 | } 44 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/FileClientBean.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 8 | 9 | public class FileClientBean implements Serializable{ 10 | 11 | private static final long serialVersionUID = 1L; 12 | private FileClientBean parent; 13 | private List subFiles=new ArrayList(); 14 | private FileModel fileModel; 15 | 16 | public FileClientBean(){ 17 | 18 | } 19 | 20 | public FileClientBean(FileModel fileModel){ 21 | this.fileModel=fileModel; 22 | } 23 | 24 | public void addSubFile(FileClientBean bean){ 25 | if(!subFiles.contains(bean)){ 26 | subFiles.add(bean); 27 | } 28 | } 29 | 30 | public List getSubFiles() { 31 | return subFiles; 32 | } 33 | 34 | 35 | public FileClientBean getParent() { 36 | return parent; 37 | } 38 | 39 | public void setParent(FileClientBean parent) { 40 | this.parent = parent; 41 | } 42 | 43 | public FileModel getFileModel() { 44 | return fileModel; 45 | } 46 | 47 | public void setFileModel(FileModel fileModel) { 48 | this.fileModel = fileModel; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/FileManagerService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.RemoteService; 6 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 7 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 8 | 9 | @RemoteServiceRelativePath("file.rpc") 10 | public interface FileManagerService extends RemoteService{ 11 | FileModel addFile(String parentId, String name, boolean folder); 12 | 13 | public void deleteFile(String fileId) ; 14 | 15 | void updateFileContent(String fileId, String content); 16 | 17 | void updateFileName(String fileId, String name); 18 | 19 | public FileModel getFile(String id); 20 | 21 | FileClientBean getUserFiles(); 22 | 23 | void moveFile(String sourceId,String targetId); 24 | 25 | List getCommonFiles(FileModel fm); 26 | } 27 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/FileManagerServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.AsyncCallback; 6 | import com.taobao.zeus.web.platform.client.module.filemanager.FileModel; 7 | 8 | public interface FileManagerServiceAsync { 9 | 10 | void addFile(String parentId, String name, boolean folder, 11 | AsyncCallback callback); 12 | 13 | void deleteFile(String fileId, AsyncCallback callback); 14 | 15 | void getFile(String id, AsyncCallback callback); 16 | 17 | void updateFileContent(String fileId, String content, 18 | AsyncCallback callback); 19 | 20 | void updateFileName(String fileId, String name, AsyncCallback callback); 21 | 22 | void getUserFiles(AsyncCallback callback); 23 | 24 | void moveFile(String sourceId, String targetId, AsyncCallback callback); 25 | 26 | void getCommonFiles(FileModel fm, AsyncCallback> callback); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/GroupServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.AsyncCallback; 6 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupModel; 7 | import com.taobao.zeus.web.platform.client.util.ZUser; 8 | 9 | public interface GroupServiceAsync { 10 | 11 | void addGroupAdmin(String groupId, String uid, AsyncCallback callback); 12 | 13 | void createGroup(String groupName, String parentGroupId, 14 | boolean isDirectory, AsyncCallback callback); 15 | 16 | void deleteGroup(String groupId, AsyncCallback callback); 17 | 18 | void getGroup(String groupId, AsyncCallback callback); 19 | 20 | void getGroupAdmins(String groupId, AsyncCallback> callback); 21 | 22 | void getUpstreamGroup(String groupId, AsyncCallback callback); 23 | 24 | void removeGroupAdmin(String groupId, String uid, 25 | AsyncCallback callback); 26 | 27 | void transferOwner(String groupId, String uid, AsyncCallback callback); 28 | 29 | void updateGroup(GroupModel group, AsyncCallback callback); 30 | 31 | void move(String groupId, String newParentGroupId, 32 | AsyncCallback callback); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/JobDebugService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import com.google.gwt.user.client.rpc.RemoteService; 4 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 5 | import com.sencha.gxt.data.shared.loader.PagingLoadConfig; 6 | import com.sencha.gxt.data.shared.loader.PagingLoadResult; 7 | import com.taobao.zeus.web.platform.client.module.word.model.DebugHistoryModel; 8 | import com.taobao.zeus.web.platform.client.util.GwtException; 9 | @RemoteServiceRelativePath("debug.rpc") 10 | public interface JobDebugService extends RemoteService{ 11 | 12 | String debug(String fileId,String mode,String content)throws GwtException; 13 | 14 | 15 | String getLog(String debugId); 16 | 17 | String getStatus(String debugId); 18 | 19 | PagingLoadResult getDebugHistory(PagingLoadConfig loadConfigString, String fileId); 20 | 21 | public void cancelDebug(String debugId) throws GwtException; 22 | 23 | DebugHistoryModel getHistoryModel(String debugId); 24 | } 25 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/JobDebugServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import com.google.gwt.user.client.rpc.AsyncCallback; 4 | import com.sencha.gxt.data.shared.loader.PagingLoadConfig; 5 | import com.sencha.gxt.data.shared.loader.PagingLoadResult; 6 | import com.taobao.zeus.web.platform.client.module.word.model.DebugHistoryModel; 7 | 8 | public interface JobDebugServiceAsync { 9 | 10 | void debug(String fileId, String mode, String content, 11 | AsyncCallback callback); 12 | 13 | void getLog(String debugId, AsyncCallback callback); 14 | 15 | void getStatus(String debugId, AsyncCallback callback); 16 | 17 | void getDebugHistory(PagingLoadConfig loadConfigString, String fileId, 18 | AsyncCallback> callback); 19 | 20 | void cancelDebug(String debugId, AsyncCallback callback); 21 | 22 | void getHistoryModel(String debugId, 23 | AsyncCallback callback); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/ProfileManagerService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.Map; 4 | 5 | import com.google.gwt.user.client.rpc.RemoteService; 6 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 7 | import com.taobao.zeus.web.platform.client.module.profile.ProfileModel; 8 | import com.taobao.zeus.web.platform.client.util.GwtException; 9 | 10 | @RemoteServiceRelativePath("profile.rpc") 11 | public interface ProfileManagerService extends RemoteService{ 12 | 13 | void updateHadoopConf(Map conf) throws GwtException; 14 | 15 | ProfileModel getProfile(); 16 | } 17 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/ProfileManagerServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.Map; 4 | 5 | import com.google.gwt.user.client.rpc.AsyncCallback; 6 | import com.taobao.zeus.web.platform.client.module.profile.ProfileModel; 7 | 8 | public interface ProfileManagerServiceAsync { 9 | 10 | void updateHadoopConf(Map conf, AsyncCallback callback); 11 | 12 | void getProfile(AsyncCallback callback); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/ReportService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import com.google.gwt.user.client.rpc.RemoteService; 8 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 9 | 10 | @RemoteServiceRelativePath("report.rpc") 11 | public interface ReportService extends RemoteService{ 12 | /** 13 | * 按日排序的任务运行趋势数据 14 | * 包括每天自动调度成功的任务数,每天自动调度失败的任务数 15 | * @return 16 | */ 17 | List> runningJobs(Date start,Date end); 18 | /** 19 | * 负责人的失败任务统计 20 | * @param date 21 | * @return 22 | */ 23 | List> ownerFailJobs(Date date); 24 | } 25 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/ReportServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import com.google.gwt.user.client.rpc.AsyncCallback; 8 | 9 | public interface ReportServiceAsync { 10 | 11 | void runningJobs(Date start, Date end, 12 | AsyncCallback>> callback); 13 | 14 | void ownerFailJobs(Date date, 15 | AsyncCallback>> callback); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/TableManagerServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.AsyncCallback; 6 | import com.sencha.gxt.data.shared.loader.FilterPagingLoadConfig; 7 | import com.sencha.gxt.data.shared.loader.PagingLoadResult; 8 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.PartitionModel; 9 | import com.taobao.zeus.web.platform.client.module.tablemanager.model.TableModel; 10 | import com.taobao.zeus.web.platform.client.module.tablemanager.TablePreviewModel; 11 | 12 | public interface TableManagerServiceAsync { 13 | 14 | void getPagingTables(FilterPagingLoadConfig loadConfigString, String uid, 15 | AsyncCallback> callback); 16 | 17 | void getTableModel(String tableName, AsyncCallback callback); 18 | 19 | void getPreviewData(PartitionModel model, 20 | AsyncCallback callback); 21 | 22 | void getPartitions(TableModel t, 23 | AsyncCallback> callback); 24 | 25 | void fillPartitionSize(PartitionModel p, 26 | AsyncCallback callback); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/TreeService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import com.google.gwt.user.client.rpc.RemoteService; 4 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 5 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupJobTreeModel; 6 | /** 7 | * 提供给左侧树形结构的服务 8 | * @author zhoufang 9 | * 10 | */ 11 | @RemoteServiceRelativePath("tree.rpc") 12 | public interface TreeService extends RemoteService{ 13 | 14 | public GroupJobTreeModel getTreeData(); 15 | 16 | public GroupJobTreeModel getMyTreeData(); 17 | /** 18 | * 任务依赖树结构 19 | * @param jobId 20 | * @return 21 | */ 22 | public GroupJobTreeModel getDependeeTree(String jobId); 23 | /** 24 | * 任务依赖树结构 25 | * @param jobId 26 | * @return 27 | */ 28 | public String getDependeeTreeJson(String jobId); 29 | 30 | public String getDependerTreeJson(String jobId); 31 | /** 32 | * 任务被依赖树结构 33 | * @param jobId 34 | * @return 35 | */ 36 | public GroupJobTreeModel getDependerTree(String jobId); 37 | 38 | public void follow(int type,String targetId); 39 | 40 | 41 | public void unfollow(int type,String targetId); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/TreeServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import com.google.gwt.user.client.rpc.AsyncCallback; 4 | import com.taobao.zeus.web.platform.client.module.jobmanager.GroupJobTreeModel; 5 | 6 | public interface TreeServiceAsync { 7 | 8 | void follow(int type, String targetId, AsyncCallback callback); 9 | 10 | void getDependeeTree(String jobId, AsyncCallback callback); 11 | 12 | void getDependeeTreeJson(String jobId, AsyncCallback callback); 13 | 14 | 15 | void getDependerTree(String jobId, AsyncCallback callback); 16 | 17 | void getMyTreeData(AsyncCallback callback); 18 | 19 | void getTreeData(AsyncCallback callback); 20 | 21 | void unfollow(int type, String targetId, AsyncCallback callback); 22 | 23 | void getDependerTreeJson(String jobId, AsyncCallback callback); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/UserService.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.RemoteService; 6 | import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 7 | import com.taobao.zeus.web.platform.client.util.ZUser; 8 | 9 | @RemoteServiceRelativePath("user.rpc") 10 | public interface UserService extends RemoteService { 11 | 12 | ZUser getUser(); 13 | 14 | List getAllUsers(); 15 | } 16 | -------------------------------------------------------------------------------- /web/src/main/java/com/taobao/zeus/web/platform/shared/rpc/UserServiceAsync.java: -------------------------------------------------------------------------------- 1 | package com.taobao.zeus.web.platform.shared.rpc; 2 | 3 | import java.util.List; 4 | 5 | import com.google.gwt.user.client.rpc.AsyncCallback; 6 | import com.taobao.zeus.web.platform.client.util.ZUser; 7 | 8 | public interface UserServiceAsync { 9 | 10 | void getAllUsers(AsyncCallback> callback); 11 | 12 | void getUser(AsyncCallback callback); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /web/src/main/resources/ARKConfig.properties: -------------------------------------------------------------------------------- 1 | arkserver=${zeus.ark.server_url} 2 | server=${zeus.ark.server} 3 | port=${zeus.ark.port} 4 | secretcache=60 5 | 6 | #arkserver=https://ark.taobao.org:4430/arkserver 7 | #server=ark.taobao.org 8 | #port=4430 9 | #secretcache=120 10 | 11 | appPort=${zeus.port} 12 | 13 | unProjectURL.1=/check.taobao 14 | unProjectURL.2=/status.taobao 15 | unProjectURL.3=/dump.do -------------------------------------------------------------------------------- /web/src/main/resources/antx.properties: -------------------------------------------------------------------------------- 1 | #环境配置,用来标记环境,可以配合Environment使用 2 | zeus.env=zeus-env 3 | zeus.loggingRoot=/data/zeus/log 4 | zeus.loggingLevel=debug 5 | #任务执行文件夹,每次任务都会在此文件夹下新建一个临时文件夹 6 | zeus.localdata.dir=/data/zeus/job_dir 7 | #此处必须是hdfs路径,所有的上传附件都会存放在下面路径上 8 | zeus.hdfsLibPath=/zeus/hdfs-upload-dir 9 | #环境配置,如果是在一个集群中,需要配置城同一个名称 10 | zeus.schedule.group=zeus-env 11 | #Scheduler 与 Worker 通信的端口 12 | zeus.connect.port=9887 13 | #hadoop jobtracker地址,填写ip+port 或者 domain+port 14 | zeus.jobtracker= 15 | 16 | #zk配置非必选,可以为空,此处的zk是用来通知任务的成功失败事件的 17 | zeus.zookeeper.host= -------------------------------------------------------------------------------- /web/src/main/resources/broadcast-applicationContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /web/src/main/webapp/MONACO.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/webapp/MONACO.TTF -------------------------------------------------------------------------------- /web/src/main/webapp/WEB-INF/jboss-web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | / 6 | 7 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CodeMirror: CSS mode 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

CodeMirror: CSS mode

14 |
49 | 52 | 53 |

MIME types defined: text/css.

54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/mysql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CodeMirror: MySQL mode 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

CodeMirror: MySQL mode

13 |
30 | 37 | 38 |

MIME types defined: text/x-mysql.

39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/shell/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Shell mode 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 |

CodeMirror: Shell mode

16 | 17 | 41 | 42 | 49 | 50 |

MIME types defined: text/x-sh.

51 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/blackboard.css: -------------------------------------------------------------------------------- 1 | /* Port of TextMate's Blackboard theme */ 2 | 3 | .cm-s-blackboard { background: #0C1021; color: #F8F8F8; } 4 | .cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; } 5 | .cm-s-blackboard .CodeMirror-gutter { background: #0C1021; border-right: 0; } 6 | .cm-s-blackboard .CodeMirror-gutter-text { color: #888; } 7 | .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; } 8 | 9 | .cm-s-blackboard .cm-keyword { color: #FBDE2D; } 10 | .cm-s-blackboard .cm-atom { color: #D8FA3C; } 11 | .cm-s-blackboard .cm-number { color: #D8FA3C; } 12 | .cm-s-blackboard .cm-def { color: #8DA6CE; } 13 | .cm-s-blackboard .cm-variable { color: #FF6400; } 14 | .cm-s-blackboard .cm-operator { color: #FBDE2D;} 15 | .cm-s-blackboard .cm-comment { color: #AEAEAE; } 16 | .cm-s-blackboard .cm-string { color: #61CE3C; } 17 | .cm-s-blackboard .cm-string-2 { color: #61CE3C; } 18 | .cm-s-blackboard .cm-meta { color: #D8FA3C; } 19 | .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } 20 | .cm-s-blackboard .cm-builtin { color: #8DA6CE; } 21 | .cm-s-blackboard .cm-tag { color: #8DA6CE; } 22 | .cm-s-blackboard .cm-attribute { color: #8DA6CE; } 23 | .cm-s-blackboard .cm-header { color: #FF6400; } 24 | .cm-s-blackboard .cm-hr { color: #AEAEAE; } 25 | .cm-s-blackboard .cm-link { color: #8DA6CE; } 26 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-cobalt .CodeMirror-gutter-text { color: #d0d0d0; } 5 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 6 | 7 | .cm-s-cobalt span.cm-comment { color: #08f; } 8 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 9 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 10 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 11 | .cm-s-cobalt span.cm-string { color: #3ad900; } 12 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 13 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 14 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 15 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 16 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 17 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 18 | .cm-s-cobalt span.cm-link { color: #845dc4; } 19 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-error {color: #f00;} 15 | .cm-s-eclipse span.cm-qualifier {color: #555;} 16 | .cm-s-eclipse span.cm-builtin {color: #30a;} 17 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 18 | .cm-s-eclipse span.cm-tag {color: #170;} 19 | .cm-s-eclipse span.cm-attribute {color: #00c;} 20 | .cm-s-eclipse span.cm-link {color: #219;} 21 | 22 | .cm-s-eclipse .CodeMirror-matchingbracket { 23 | border:1px solid grey; 24 | color:black !important;; 25 | } 26 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-error {background-color: #fdd;} 10 | .cm-s-elegant span.cm-link {color: #762;} 11 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/erlang-dark.css: -------------------------------------------------------------------------------- 1 | .cm-s-erlang-dark { background: #002240; color: white; } 2 | .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-erlang-dark .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-erlang-dark .CodeMirror-gutter-text { color: #d0d0d0; } 5 | .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; } 6 | 7 | .cm-s-erlang-dark span.cm-atom { color: #845dc4; } 8 | .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } 9 | .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } 10 | .cm-s-erlang-dark span.cm-builtin { color: #eeaaaa; } 11 | .cm-s-erlang-dark span.cm-comment { color: #7777ff; } 12 | .cm-s-erlang-dark span.cm-def { color: #ee77aa; } 13 | .cm-s-erlang-dark span.cm-error { color: #9d1e15; } 14 | .cm-s-erlang-dark span.cm-keyword { color: #ffee80; } 15 | .cm-s-erlang-dark span.cm-meta { color: #50fefe; } 16 | .cm-s-erlang-dark span.cm-number { color: #ffd0d0; } 17 | .cm-s-erlang-dark span.cm-operator { color: #dd1111; } 18 | .cm-s-erlang-dark span.cm-string { color: #3ad900; } 19 | .cm-s-erlang-dark span.cm-tag { color: #9effff; } 20 | .cm-s-erlang-dark span.cm-variable { color: #50fe50; } 21 | .cm-s-erlang-dark span.cm-variable-2 { color: #ee00ee; } 22 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/monokai.css: -------------------------------------------------------------------------------- 1 | /* Based on Sublime Text's Monokai theme */ 2 | 3 | .cm-s-monokai {background: #272822; color: #f8f8f2;} 4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} 5 | .cm-s-monokai .CodeMirror-gutter {background: #272822; border-right: 0px;} 6 | .cm-s-monokai .CodeMirror-gutter-text {color: #d0d0d0;} 7 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} 8 | 9 | .cm-s-monokai span.cm-comment {color: #75715e;} 10 | .cm-s-monokai span.cm-atom {color: #ae81ff;} 11 | .cm-s-monokai span.cm-number {color: #ae81ff;} 12 | 13 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} 14 | .cm-s-monokai span.cm-keyword {color: #f92672;} 15 | .cm-s-monokai span.cm-string {color: #e6db74;} 16 | 17 | .cm-s-monokai span.cm-variable {color: #a6e22e;} 18 | .cm-s-monokai span.cm-variable-2 {color: #9effff;} 19 | .cm-s-monokai span.cm-def {color: #fd971f;} 20 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} 21 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;} 22 | .cm-s-monokai span.cm-tag {color: #f92672;} 23 | .cm-s-monokai span.cm-link {color: #ae81ff;} 24 | 25 | .cm-s-monokai .CodeMirror-matchingbracket { 26 | text-decoration: underline; 27 | color: white !important; 28 | } 29 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/night.css: -------------------------------------------------------------------------------- 1 | /* Loosely based on the Midnight Textmate theme */ 2 | 3 | .cm-s-night { background: #0a001f; color: #f8f8f8; } 4 | .cm-s-night div.CodeMirror-selected { background: #447 !important; } 5 | .cm-s-night .CodeMirror-gutter { background: #0a001f; border-right: 1px solid #aaa; } 6 | .cm-s-night .CodeMirror-gutter-text { color: #f8f8f8; } 7 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; } 8 | 9 | .cm-s-night span.cm-comment { color: #6900a1; } 10 | .cm-s-night span.cm-atom { color: #845dc4; } 11 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } 12 | .cm-s-night span.cm-keyword { color: #599eff; } 13 | .cm-s-night span.cm-string { color: #37f14a; } 14 | .cm-s-night span.cm-meta { color: #7678e2; } 15 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } 16 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } 17 | .cm-s-night span.cm-error { color: #9d1e15; } 18 | .cm-s-night span.cm-bracket { color: #8da6ce; } 19 | .cm-s-night span.cm-comment { color: #6900a1; } 20 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } 21 | .cm-s-night span.cm-link { color: #845dc4; } 22 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/rubyblue.css: -------------------------------------------------------------------------------- 1 | .cm-s-rubyblue { font:13px/1.4em Trebuchet, Verdana, sans-serif; } /* - customized editor font - */ 2 | 3 | .cm-s-rubyblue { background: #112435; color: white; } 4 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } 5 | .cm-s-rubyblue .CodeMirror-gutter { background: #1F4661; border-right: 7px solid #3E7087; min-width:2.5em; } 6 | .cm-s-rubyblue .CodeMirror-gutter-text { color: white; } 7 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; } 8 | 9 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } 10 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; } 11 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } 12 | .cm-s-rubyblue span.cm-keyword { color: #F0F; } 13 | .cm-s-rubyblue span.cm-string { color: #F08047; } 14 | .cm-s-rubyblue span.cm-meta { color: #F0F; } 15 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } 16 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } 17 | .cm-s-rubyblue span.cm-error { color: #AF2018; } 18 | .cm-s-rubyblue span.cm-bracket { color: #F0F; } 19 | .cm-s-rubyblue span.cm-link { color: #F4C20B; } 20 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } 21 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } 22 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/theme/vibrant-ink.css: -------------------------------------------------------------------------------- 1 | /* Taken from the popular Visual Studio Vibrant Ink Schema */ 2 | 3 | .cm-s-vibrant-ink { background: black; color: white; } 4 | .cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; } 5 | 6 | .cm-s-vibrant-ink .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; } 7 | .cm-s-vibrant-ink .CodeMirror-gutter-text { color: #d0d0d0; } 8 | .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; } 9 | 10 | .cm-s-vibrant-ink .cm-keyword { color: #CC7832; } 11 | .cm-s-vibrant-ink .cm-atom { color: #FC0; } 12 | .cm-s-vibrant-ink .cm-number { color: #FFEE98; } 13 | .cm-s-vibrant-ink .cm-def { color: #8DA6CE; } 14 | .cm-s-vibrant-ink span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #FFC66D } 15 | .cm-s-vibrant-ink span.cm-variable-3, .cm-s-cobalt span.cm-def { color: #FFC66D } 16 | .cm-s-vibrant-ink .cm-operator { color: #888; } 17 | .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } 18 | .cm-s-vibrant-ink .cm-string { color: #A5C25C } 19 | .cm-s-vibrant-ink .cm-string-2 { color: red } 20 | .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } 21 | .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } 22 | .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } 23 | .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } 24 | .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } 25 | .cm-s-vibrant-ink .cm-header { color: #FF6400; } 26 | .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } 27 | .cm-s-vibrant-ink .cm-link { color: blue; } 28 | -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/util/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: relative; 3 | } 4 | 5 | .CodeMirror-dialog > div { 6 | position: absolute; 7 | top: 0; left: 0; right: 0; 8 | background: white; 9 | border-bottom: 1px solid #eee; 10 | z-index: 15; 11 | padding: .1em .8em; 12 | overflow: hidden; 13 | color: #333; 14 | } 15 | 16 | .CodeMirror-dialog input { 17 | border: none; 18 | outline: none; 19 | background: transparent; 20 | width: 20em; 21 | color: inherit; 22 | font-family: monospace; 23 | } 24 | 25 | .CodeMirror-dialog button { 26 | font-size: 70%; 27 | } -------------------------------------------------------------------------------- /web/src/main/webapp/codemirror/util/simple-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-completions { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 6 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 7 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 8 | } 9 | .CodeMirror-completions select { 10 | background: #fafafa; 11 | outline: none; 12 | border: none; 13 | padding: 0; 14 | margin: 0; 15 | font-family: monospace; 16 | } 17 | -------------------------------------------------------------------------------- /web/src/main/webapp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michael8335/zeus2/ff155609d2c2c3dbe9758f6f549f753cbd65cf61/web/src/main/webapp/favicon.ico -------------------------------------------------------------------------------- /web/src/main/webapp/platform.css: -------------------------------------------------------------------------------- 1 | .console-font { 2 | font-family: ' Lucida Console '; 3 | font-size: 14px; 4 | line-height: 16px; 5 | } -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/config.rb: -------------------------------------------------------------------------------- 1 | environment = :production 2 | project_type = :stand_alone 3 | http_path = "/" 4 | css_dir = "../styles" 5 | sass_dir = "." 6 | images_dir = "images" 7 | sass_options = { 8 | :line_numbers => false, 9 | :debug_info => false 10 | } 11 | 12 | # output_style = :compressed 13 | # output_style = :compact 14 | output_style = :expanded 15 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreDefault.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeDefault.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreDjango.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeDjango.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreEclipse.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeEclipse.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreEmacs.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeEmacs.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreFadeToGrey.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeFadeToGrey.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreMDUltra.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeMDUltra.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreMidnight.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeMidnight.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shCoreRDark.scss: -------------------------------------------------------------------------------- 1 | @import "shCore.scss"; 2 | @import "shThemeRDark.scss"; 3 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeDefault.scss: -------------------------------------------------------------------------------- 1 | // Default Syntax Highlighter theme. 2 | 3 | @import "_theme_template.scss"; 4 | 5 | .syntaxhighlighter { 6 | .keyword { font-weight: bold !important; } 7 | } 8 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeDjango.scss: -------------------------------------------------------------------------------- 1 | // Django SyntaxHighlighter theme 2 | 3 | $background: #0a2b1d !default; 4 | 5 | $line_highlighted_background: #233729 !default; 6 | $line_highlighted_number: white !default; 7 | 8 | $gutter_text: #497958 !default; 9 | $gutter_border_color: #41a83e !default; 10 | 11 | $toolbar_collapsed_a: #96dd3b !default; 12 | $toolbar_collapsed_a_hover: #fff !default; 13 | $toolbar_collapsed_background: #000 !default; 14 | 15 | $toolbar_a: #fff !default; 16 | $toolbar_a_hover: #ffe862 !default; 17 | 18 | $code_plain: #f8f8f8 !default; 19 | $code_comments: #336442 !default; 20 | $code_string: #9df39f !default; 21 | $code_keyword: #96dd3b !default; 22 | $code_preprocessor: #91bb9e !default; 23 | $code_variable: #ffaa3e !default; 24 | $code_value: #f7e741 !default; 25 | $code_functions: #ffaa3e !default; 26 | $code_constants: #e0e8ff !default; 27 | $code_color1: #eb939a !default; 28 | $code_color2: #91bb9e !default; 29 | $code_color3: #edef7d !default; 30 | 31 | @import "_theme_template.scss"; 32 | 33 | .syntaxhighlighter { 34 | .comments { font-style: italic !important; } 35 | .keyword { font-weight: bold !important; } 36 | } 37 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeEclipse.scss: -------------------------------------------------------------------------------- 1 | // Eclipse IDE SyntaxHighlighter color theme 2 | // (C) Code-House 3 | // :http//blog.code-house.org/2009/10/xml-i-adnotacje-kod-ogolnego-przeznaczenia-i-jpa/ 4 | 5 | $background: #fff !default; 6 | 7 | $line_highlighted_background: #c3defe !default; 8 | $line_highlighted_number: #fff !default; 9 | 10 | $gutter_text: #787878 !default; 11 | $gutter_border_color: #d4d0c8 !default; 12 | 13 | $toolbar_collapsed_a: #3f5fbf !default; 14 | $toolbar_collapsed_a_hover: #aa7700 !default; 15 | $toolbar_collapsed_background: #fff !default; 16 | 17 | $toolbar_a: #a0a0a0 !default; 18 | $toolbar_a_hover: red !default; 19 | 20 | $code_plain: black !default; 21 | $code_comments: #3f5fbf !default; 22 | $code_string: #2a00ff !default; 23 | $code_keyword: #7f0055 !default; 24 | $code_preprocessor: #646464 !default; 25 | $code_variable: #aa7700 !default; 26 | $code_value: #009900 !default; 27 | $code_functions: #ff1493 !default; 28 | $code_constants: #0066cc !default; 29 | $code_color1: gray !default; 30 | $code_color2: #ff1493 !default; 31 | $code_color3: red !default; 32 | 33 | @import "_theme_template.scss"; 34 | 35 | .syntaxhighlighter { 36 | .keyword { font-weight: bold !important; } 37 | 38 | .xml { 39 | .keyword { 40 | color: #3f7f7f !important; 41 | font-weight: normal !important; } 42 | .color1, .color1 a { color: #7f007f !important; } 43 | .string { 44 | font-style: italic !important; 45 | color: #2a00ff !important; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeEmacs.scss: -------------------------------------------------------------------------------- 1 | // Emacs SyntaxHighlighter theme based on theme by Joshua Emmons 2 | // http://www.skia.net/ 3 | 4 | $background: black !default; 5 | 6 | $line_highlighted_background: #2A3133 !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #d3d3d3 !default; 10 | $gutter_border_color: #990000 !default; 11 | 12 | $toolbar_collapsed_a: #ebdb8d !default; 13 | $toolbar_collapsed_a_hover: #ff7d27 !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #9ccff4 !default; 18 | 19 | $code_plain: #d3d3d3 !default; 20 | $code_comments: #ff7d27 !default; 21 | $code_string: #ff9e7b !default; 22 | $code_keyword: aqua !default; 23 | $code_preprocessor: #aec4de !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #81cef9 !default; 27 | $code_constants: #ff9e7b !default; 28 | $code_color1: #ebdb8d !default; 29 | $code_color2: #ff7d27 !default; 30 | $code_color3: #aec4de !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeFadeToGrey.scss: -------------------------------------------------------------------------------- 1 | // Fade to Grey SyntaxHighlighter theme based on theme by Brasten Sager 2 | // :http//www.ibrasten.com/ 3 | 4 | $background: #121212 !default; 5 | 6 | $line_highlighted_background: #2C2C29 !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #3185b9 !default; 11 | 12 | $toolbar_collapsed_a: #3185b9 !default; 13 | $toolbar_collapsed_a_hover: #d01d33 !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #96daff !default; 18 | 19 | $code_plain: white !default; 20 | $code_comments: #696854 !default; 21 | $code_string: #e3e658 !default; 22 | $code_keyword: #d01d33 !default; 23 | $code_preprocessor: #435a5f !default; 24 | $code_variable: #898989 !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #aaaaaa !default; 27 | $code_constants: #96daff !default; 28 | $code_color1: #ffc074 !default; 29 | $code_color2: #4a8cdb !default; 30 | $code_color3: #96daff !default; 31 | 32 | @import "_theme_template.scss"; 33 | 34 | .syntaxhighlighter { 35 | .functions { font-weight: bold !important; } 36 | } 37 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeMDUltra.scss: -------------------------------------------------------------------------------- 1 | // MDUltra SyntaxHighlighter theme based on Midnight Theme 2 | // http://www.mddev.co.uk/ 3 | 4 | $background: #222222 !default; 5 | 6 | $line_highlighted_background: #253e5a !default; 7 | $line_highlighted_number: white !default; 8 | 9 | $gutter_text: #38566f !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #428bdd !default; 13 | $toolbar_collapsed_a_hover: lime !default; 14 | $toolbar_collapsed_background: black !default; 15 | 16 | $toolbar_a: #aaaaff !default; 17 | $toolbar_a_hover: #9ccff4 !default; 18 | 19 | $code_plain: lime !default; 20 | $code_comments: #428bdd !default; 21 | $code_string: lime !default; 22 | $code_keyword: #aaaaff !default; 23 | $code_preprocessor: #8aa6c1 !default; 24 | $code_variable: aqua !default; 25 | $code_value: #f7e741 !default; 26 | $code_functions: #ff8000 !default; 27 | $code_constants: yellow !default; 28 | $code_color1: red !default; 29 | $code_color2: yellow !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeMidnight.scss: -------------------------------------------------------------------------------- 1 | // Midnight SyntaxHighlighter theme based on theme by J.D. Myers 2 | // http://webdesign.lsnjd.com/ 3 | 4 | $background: #0f192a !default; 5 | 6 | $line_highlighted_background: #253e5a !default; 7 | $line_highlighted_number: #38566f !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #428bdd !default; 13 | $toolbar_collapsed_a_hover: #1dc116 !default; 14 | $toolbar_collapsed_background: #000 !default; 15 | 16 | $toolbar_a: #D1EDFF !default; 17 | $toolbar_a_hover: #8aa6c1 !default; 18 | 19 | $code_plain: #d1edff !default; 20 | $code_comments: #428bdd !default; 21 | $code_string: #1dc116 !default; 22 | $code_keyword: #b43d3d !default; 23 | $code_preprocessor: #8aa6c1 !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #f7e741 !default; 26 | $code_functions: #ffaa3e !default; 27 | $code_constants: #e0e8ff !default; 28 | $code_color1: #f8bb00 !default; 29 | $code_color2: white !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/compass/shThemeRDark.scss: -------------------------------------------------------------------------------- 1 | // RDark SyntaxHighlighter theme based on theme by Radu Dineiu 2 | // http://www.vim.org/scripts/script.php?script_id=1732 3 | 4 | $background: #1b2426 !default; 5 | 6 | $line_highlighted_background: #323E41 !default; 7 | $line_highlighted_number: #b9bdb6 !default; 8 | 9 | $gutter_text: #afafaf !default; 10 | $gutter_border_color: #435a5f !default; 11 | 12 | $toolbar_collapsed_a: #5ba1cf !default; 13 | $toolbar_collapsed_a_hover: #5ce638 !default; 14 | $toolbar_collapsed_background: #000 !default; 15 | 16 | $toolbar_a: #fff !default; 17 | $toolbar_a_hover: #e0e8ff !default; 18 | 19 | $code_plain: #b9bdb6 !default; 20 | $code_comments: #878a85 !default; 21 | $code_string: #5ce638 !default; 22 | $code_keyword: #5ba1cf !default; 23 | $code_preprocessor: #435a5f !default; 24 | $code_variable: #ffaa3e !default; 25 | $code_value: #009900 !default; 26 | $code_functions: #ffaa3e !default; 27 | $code_constants: #e0e8ff !default; 28 | $code_color1: #e0e8ff !default; 29 | $code_color2: white !default; 30 | $code_color3: #ffaa3e !default; 31 | 32 | @import "_theme_template.scss"; 33 | -------------------------------------------------------------------------------- /web/src/main/webapp/syntaxhighlighter/scripts/shAutoloader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/SyntaxHighlighter 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html 7 | * 8 | * @version 9 | * 3.0.83 (July 02 2010) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2010 Alex Gorbatchev. 13 | * 14 | * @license 15 | * Dual licensed under the MIT and GPL licenses. 16 | */ 17 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(){1 h=5;h.I=2(){2 n(c,a){4(1 d=0;d