001/*
002 * Syncany, www.syncany.org
003 * Copyright (C) 2011-2016 Philipp C. Heckel <philipp.heckel@gmail.com> 
004 *
005 * This program is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU General Public License as published by
007 * the Free Software Foundation, either version 3 of the License, or
008 * (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU General Public License for more details.
014 *
015 * You should have received a copy of the GNU General Public License
016 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
017 */
018package org.syncany.operations.watch;
019
020import org.simpleframework.xml.Element;
021import org.simpleframework.xml.Root;
022import org.syncany.operations.OperationOptions;
023import org.syncany.operations.cleanup.CleanupOperationOptions;
024import org.syncany.operations.down.DownOperationOptions;
025import org.syncany.operations.up.UpOperationOptions;
026
027/**
028 * The watch operation options represent the configuration parameters
029 * of the {@link WatchOperation}. They are used to alter the behavior of the
030 * operation, change interval times and enable/disable certain behaviors.
031 * 
032 * <p>The options can also be stored as XML within the daemon configuration.
033 * 
034 * @author Philipp C. Heckel (philipp.heckel@gmail.com)
035 */
036@Root(name="watch")
037public class WatchOperationOptions implements OperationOptions {
038        @Element(required = false)
039        private int interval = 2*60*1000;
040        
041        @Element(required = false)
042        private boolean announcements = true;
043        
044        @Element(required = false)
045        private String announcementsHost = "notify.syncany.org";
046        
047        @Element(required = false)
048        private int announcementsPort = 8080;
049        
050        @Element(required = false)
051        private int settleDelay = 3000;
052        
053        @Element(required = false)
054        private int cleanupInterval = 1*60*60*1000;
055        
056        @Element(required = false)
057        private boolean watcher = true;
058        
059        @Element(name = "up", required = false) 
060        private UpOperationOptions upOptions = new UpOperationOptions();
061        
062        @Element(name = "down", required = false)
063        private DownOperationOptions downOptions = new DownOperationOptions();
064        
065        @Element(name = "clean", required = false) 
066        private CleanupOperationOptions cleanupOptions = new CleanupOperationOptions();
067        
068        public int getInterval() {
069                return interval;
070        }
071
072        public void setInterval(int interval) {
073                this.interval = interval;
074        }
075
076        public boolean announcementsEnabled() {
077                return announcements;
078        }
079
080        public void setAnnouncements(boolean announcements) {
081                this.announcements = announcements;
082        }
083
084        public String getAnnouncementsHost() {
085                return announcementsHost;
086        }
087
088        public void setAnnouncementsHost(String announcementsHost) {
089                this.announcementsHost = announcementsHost;
090        }
091
092        public int getAnnouncementsPort() {
093                return announcementsPort;
094        }
095
096        public void setAnnouncementsPort(int announcementsPort) {
097                this.announcementsPort = announcementsPort;
098        }
099
100        public int getSettleDelay() {
101                return settleDelay;
102        }
103
104        public void setSettleDelay(int settleDelay) {
105                this.settleDelay = settleDelay;
106        }
107
108        public boolean watcherEnabled() {
109                return watcher;
110        }
111
112        public void setWatcher(boolean watcher) {
113                this.watcher = watcher;
114        }
115
116        public int getCleanupInterval() {
117                return cleanupInterval;
118        }
119
120        public void setCleanupInterval(int cleanupInterval) {
121                this.cleanupInterval = cleanupInterval;
122        }
123
124        public UpOperationOptions getUpOptions() {
125                return upOptions;
126        }
127
128        public void setUpOptions(UpOperationOptions upOptions) {
129                this.upOptions = upOptions;
130        }
131
132        public CleanupOperationOptions getCleanupOptions() {
133                return cleanupOptions;
134        }
135
136        public void setCleanupOptions(CleanupOperationOptions cleanupOptions) {
137                this.cleanupOptions = cleanupOptions;
138        }
139
140        public DownOperationOptions getDownOptions() {
141                return downOptions;
142        }
143
144        public void setDownOptions(DownOperationOptions downOptions) {
145                this.downOptions = downOptions;
146        }
147}