001/* 002 * Copyright (c) 2007-2016 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 021package cascading.flow.planner; 022 023import cascading.flow.FlowStep; 024import cascading.flow.planner.process.FlowNodeFactory; 025import cascading.flow.planner.process.FlowStepFactory; 026import cascading.tap.Tap; 027import cascading.util.Util; 028 029/** 030 * 031 */ 032public abstract class BaseFlowStepFactory<Config> implements FlowStepFactory<Config> 033 { 034 FlowNodeFactory flowNodeFactory; 035 036 protected BaseFlowStepFactory() 037 { 038 } 039 040 public BaseFlowStepFactory( FlowNodeFactory flowNodeFactory ) 041 { 042 this.flowNodeFactory = flowNodeFactory; 043 } 044 045 public String makeFlowStepName( FlowStep flowStep, int numSteps, int stepNum ) 046 { 047 Tap sink = Util.getFirst( flowStep.getSinkTaps() ); 048 049 stepNum++; // number more sensical (5/5) 050 051 if( sink == null || sink.isTemporary() ) 052 return String.format( "(%d/%d)", stepNum, numSteps ); 053 054 String identifier = sink.getIdentifier(); 055 056 if( Util.isEmpty( identifier ) ) 057 return String.format( "(%d/%d)", stepNum, numSteps ); 058 059 if( identifier.length() > 25 ) 060 identifier = String.format( "...%25s", identifier.substring( identifier.length() - 25 ) ); 061 062 return String.format( "(%d/%d) %s", stepNum, numSteps, identifier ); 063 } 064 065 @Override 066 public FlowNodeFactory getFlowNodeFactory() 067 { 068 return flowNodeFactory; 069 } 070 }