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.cascade; 022 023 import java.util.HashMap; 024 import java.util.Map; 025 026 import cascading.cascade.planner.FlowGraph; 027 import cascading.cascade.planner.IdentifierGraph; 028 import cascading.flow.FlowDef; 029 import cascading.pipe.Pipe; 030 import cascading.tap.Tap; 031 032 /** 033 * Class Cascades provides useful utilities for use in constructing {@link Cascade} and {@link cascading.flow.Flow} 034 * instances via the {@link CascadeConnector} and {@link cascading.flow.FlowConnector}, respectively. 035 * <p/> 036 * See the {@link FlowDef} for the recommended alternative to dealing with Maps of Taps. 037 */ 038 public class Cascades 039 { 040 /** 041 * Method tapsMap creates a new Map for the given name and tap. 042 * 043 * @param name of type String 044 * @param tap of type Tap 045 * @return Map 046 */ 047 public static Map<String, Tap> tapsMap( String name, Tap tap ) 048 { 049 return tapsMap( new String[]{name}, Tap.taps( tap ) ); 050 } 051 052 /** 053 * Method tapsMap creates a new Map for each name and tap. 054 * 055 * @param names of type String[] 056 * @param taps of type Tap[] 057 * @return Map 058 */ 059 public static Map<String, Tap> tapsMap( String[] names, Tap[] taps ) 060 { 061 Map<String, Tap> map = new HashMap<String, Tap>(); 062 063 for( int i = 0; i < names.length; i++ ) 064 map.put( names[ i ], taps[ i ] ); 065 066 return map; 067 } 068 069 /** 070 * Method tapsMap creates a new Map using the given Pipe name and tap. 071 * 072 * @param pipe of type Pipe 073 * @param tap of type Tap 074 * @return Map 075 */ 076 public static Map<String, Tap> tapsMap( Pipe pipe, Tap tap ) 077 { 078 return tapsMap( Pipe.pipes( pipe ), Tap.taps( tap ) ); 079 } 080 081 /** 082 * Method tapsMap creates a new Map using the given pipes and taps. 083 * 084 * @param pipes of type Pipe[] 085 * @param taps of type Tap[] 086 * @return Map 087 */ 088 public static Map<String, Tap> tapsMap( Pipe[] pipes, Tap[] taps ) 089 { 090 Map<String, Tap> map = new HashMap<String, Tap>(); 091 092 for( int i = 0; i < pipes.length; i++ ) 093 map.put( pipes[ i ].getName(), taps[ i ] ); 094 095 return map; 096 } 097 098 public static FlowGraph getFlowGraphFrom( Cascade cascade ) 099 { 100 return cascade.getFlowGraph(); 101 } 102 103 public static IdentifierGraph getTapGraphFrom( Cascade cascade ) 104 { 105 return cascade.getIdentifierGraph(); 106 } 107 }