    001    /*
    002     * Copyright (c) 2007-2014 Concurrent, Inc. All Rights Reserved.
    003     *
    004     * Project and contact information: http://www.cascading.org/
    005     *
    006     * This file is part of the Cascading project.
    007     *
    008     * Licensed under the Apache License, Version 2.0 (the "License");
    009     * you may not use this file except in compliance with the License.
    010     * You may obtain a copy of the License at
    011     *
    012     *     http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing, software
    015     * distributed under the License is distributed on an "AS IS" BASIS,
    016     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    017     * See the License for the specific language governing permissions and
    018     * limitations under the License.
    019     */
    020
    021    package cascading.management.state;
    022
    023    import cascading.cascade.Cascade;
    024    import cascading.flow.Flow;
    025    import cascading.flow.FlowStep;
    026    import cascading.stats.CascadingStats;
    027
    028    /**
    029     *
    030     */
    031    public abstract class ClientState extends BaseState
    032      {
    033      public static final String STATE_SERVICE_CLASS_PROPERTY = "cascading.management.state.service.classname";
    034
    035      public static ClientState NULL = new ClientState()
    036      {
    037      @Override
    038      public void start( long time )
    039        {
    040        }
    041
    042      @Override
    043      public void run( long time )
    044        {
    045        }
    046
    047      @Override
    048      public void stop( long time )
    049        {
    050        }
    051
    052      @Override
    053      String[] getContext( String group, String metric )
    054        {
    055        return new String[ 0 ];
    056        }
    057
    058      @Override
    059      public void recordStats( CascadingStats stats )
    060        {
    061        }
    062
    063      @Override
    064      public void recordFlowStep( FlowStep flowStep )
    065        {
    066        }
    067
    068      @Override
    069      public void recordFlow( Flow flow )
    070        {
    071        }
    072
    073      @Override
    074      public void recordCascade( Cascade cascade )
    075        {
    076        }
    077      };
    078
    079      public ClientState()
    080        {
    081        }
    082
    083      @Override
    084      String[] getContext( String group, String metric )
    085        {
    086        return asArray( group, metric );
    087        }
    088
    089      public void setStatus( Enum status, long time )
    090        {
    091        setMetric( status, time );
    092        }
    093
    094      public abstract void recordStats( CascadingStats stats );
    095
    096      public abstract void recordFlowStep( FlowStep flowStep );
    097
    098      public abstract void recordFlow( Flow flow );
    099
    100      public abstract void recordCascade( Cascade cascade );
    101
    102      public void record( String id, Object object )
    103        {
    104        store( id, object );
    105        }
    106
    107      public void start( long time )
    108        {
    109        setMetric( "state", "start", time );
    110        }
    111
    112      public void submit( long time )
    113        {
    114        setMetric( "state", "submit", time );
    115        }
    116
    117      public void run( long time )
    118        {
    119        setMetric( "state", "run", time );
    120        }
    121
    122      public void stop( long time )
    123        {
    124        setMetric( "state", "stop", time );
    125        }
    126      }