Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2013 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.android.builder.internal.incremental;
 
 
 import java.io.File;
 import java.util.List;

Holds dependency information, including the main compiled file, secondary input files (usually headers), and output files.
 
 public class DependencyData {
 
     @NonNull
     private String mMainFile;
     @NonNull
     private List<StringmSecondaryFiles = Lists.newArrayList();
     @NonNull
     private List<StringmOutputFiles = Lists.newArrayList();
 
     DependencyData() {
     }
 
     @NonNull
     public String getMainFile() {
         return ;
     }
 
     void setMainFile(@NonNull String path) {
          = path;
     }
 
     @NonNull
     public List<StringgetSecondaryFiles() {
         return ;
     }
 
     void addSecondaryFile(@NonNull String path) {
         .add(path);
     }
 
     @NonNull
     public List<StringgetOutputFiles() {
         return ;
     }
 
     void addOutputFile(@NonNull String path) {
         .add(path);
     }
 
     public void addSecondaryOutputFile(@NonNull String path) {
         .add(path);
     }
 
     @NonNull
     public List<StringgetSecondaryOutputFiles() {
         return ;
     }

    
Parses the given dependency file and returns the parsed data

Parameters:
dependencyFile the dependency file
 
     @Nullable
     public static DependencyData parseDependencyFile(@NonNull File dependencyFile)
             throws IOException {
         // first check if the dependency file is here.
         if (!dependencyFile.isFile()) {
             return null;
         }
 
         // Read in our dependency file
         List<Stringcontent = Files.readLines(dependencyFile.);
         return processDependencyData(content);
     }
    private static enum ParseMode {
        OUTPUT, MAIN, SECONDARY, DONE
    }
    @Nullable
    static DependencyData processDependencyData(@NonNull List<Stringcontent) {
        // The format is technically:
        // output1 output2 [...]: dep1 dep2 [...]
        // However, the current tools generating those files guarantee that each file path
        // is on its own line, making it simpler to handle windows paths as well as path
        // with spaces in them.
        DependencyData data = new DependencyData();
        ParseMode parseMode = .;
        for (String line : content) {
            line = line.trim();
            // check for separator at the beginning
            if (line.startsWith(":")) {
                parseMode = .;
                line = line.substring(1).trim();
            }
            ParseMode nextMode = parseMode;
            // remove the \ at the end.
            if (line.endsWith("\\")) {
                line = line.substring(0, line.length() - 1).trim();
            }
            // detect : at the end indicating a parse mode change *after* we process this line.
            if (line.endsWith(":")) {
                if (parseMode == .) {
                    nextMode = .;
                } else {
                    nextMode = .;
                }
                line = line.substring(0, line.length() - 1).trim();
            }
            if (nextMode == .) {
                break;
            }
            if (!line.isEmpty()) {
                switch (parseMode) {
                    case :
                        data.addOutputFile(line);
                        break;
                    case :
                        data.setMainFile(line);
                        nextMode = .;
                        break;
                    case :
                        data.addSecondaryFile(line);
                        break;
                }
            }
            parseMode = nextMode;
        }
        if (data.getMainFile() == null) {
            return null;
        }
        return data;
    }
    @Override
    public String toString() {
        return "DependencyData{" +
                "mMainFile='" +  + '\'' +
                ", mSecondaryFiles=" +  +
                ", mOutputFiles=" +  +
                '}';
    }
New to GrepCode? Check out our FAQ X