DfsBaseConditional.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:2k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.ant.condition;
  19. import org.apache.tools.ant.taskdefs.condition.Condition;
  20. /**
  21.  * This wrapper around {@link org.apache.hadoop.ant.DfsTask} implements the
  22.  * Ant >1.5
  23.  * {@link org.apache.tools.ant.taskdefs.condition.Condition Condition}
  24.  * interface for HDFS tests. So one can test conditions like this:
  25.  * {@code
  26.  *   <condition property="precond">
  27.  *     <and>
  28.  *       <hadoop:exists file="fileA" />
  29.  *       <hadoop:exists file="fileB" />
  30.  *       <hadoop:sizezero file="fileB" />
  31.  *     </and>
  32.  *   </condition>
  33.  * }
  34.  * This will define the property precond if fileA exists and fileB has zero
  35.  * length.
  36.  */
  37. public abstract class DfsBaseConditional extends org.apache.hadoop.ant.DfsTask
  38.                        implements Condition {
  39.   protected boolean result;
  40.   String file;
  41.   private void initArgs() {
  42.     setCmd("test");
  43.     setArgs("-"  +  getFlag() + "," + file);
  44.   }
  45.   public void setFile(String file) {
  46.     this.file = file;
  47.   }
  48.   protected abstract char getFlag();
  49.   protected int postCmd(int exit_code) {
  50.     exit_code = super.postCmd(exit_code);
  51.     result = exit_code == 1;
  52.     return exit_code;
  53.   }
  54.   public boolean eval() {
  55.     initArgs();
  56.     execute();
  57.     return result;
  58.   }
  59. }