View Javadoc
1   /*
2    * This file is part of Waarp Project (named also Waarp or GG).
3    *
4    *  Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5    *  tags. See the COPYRIGHT.txt in the distribution for a full listing of
6    * individual contributors.
7    *
8    *  All Waarp Project is free software: you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License, or (at your
11   * option) any later version.
12   *
13   * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14   * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15   * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License along with
18   * Waarp . If not, see <http://www.gnu.org/licenses/>.
19   */
20  package org.waarp.common.file;
21  
22  import org.waarp.common.command.exception.CommandAbstractException;
23  import org.waarp.common.exception.NoRestartException;
24  
25  /**
26   * Restart object that implements the REST command.<br>
27   * Note that if necessary, according to the implementation of {@link
28   * DirInterface} and {@link FileInterface},
29   * one could want to implement a way to store or retrieve Marker from/to the
30   * client specification.
31   */
32  public abstract class Restart {
33    /**
34     * SessionInterface
35     */
36    private final SessionInterface session;
37  
38    /**
39     * Is the current Restart object in context set
40     */
41    private boolean isSet;
42  
43    /**
44     * Default constructor
45     *
46     * @param session
47     */
48    protected Restart(final SessionInterface session) {
49      isSet = false;
50      this.session = session;
51    }
52  
53    /**
54     * @return the isSet
55     */
56    protected final boolean isSet() {
57      return isSet;
58    }
59  
60    /**
61     * @param isSet the isSet to set
62     */
63    public void setSet(final boolean isSet) {
64      this.isSet = isSet;
65    }
66  
67    /**
68     * @return the session
69     */
70    protected final SessionInterface getSession() {
71      return session;
72    }
73  
74    /**
75     * Restart from a Marker for the next FileInterface
76     *
77     * @param marker
78     *
79     * @return True if the Marker is OK
80     *
81     * @throws CommandAbstractException
82     */
83    public abstract boolean restartMarker(String marker)
84        throws CommandAbstractException;
85  
86    /**
87     * @return the position from a previous REST command
88     *
89     * @throws NoRestartException if no REST command was issued before
90     */
91    public abstract long getPosition() throws NoRestartException;
92  
93    // FIXME Additionally the implementation should implement a way to get the
94    // values
95  
96    /**
97     * @param nextBlock
98     *
99     * @return the max between the available size and the nextblock size
100    */
101   public abstract int getMaxSize(int nextBlock);
102 }