// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexArtifact.java
// public abstract class IndexArtifact implements Serializable
// {
//     private static final long serialVersionUID = -5720959937441417671L;
//     private String location;
// 
//     public IndexArtifact(String location)
//     {
//         this.location = location;
//     }
// 
//     public String getLocation()
//     {
//         return this.location;
//     }
// 
//     /**
//      * Checks if this type of file (on postfix)
//      * has been stored in the storage layer.
//      * 
//      * @param filename Full filename to check
//      * @return True if file has been stored
//      */
//     public boolean isStoredFile(String filename)
//     {
//         for (String key : getFileTypes().keySet())
//         {
//             if (filename.endsWith(key))
//             {
//                 return getFileTypes().get(key);
//             }
//         }
//         return false;
//     }
// 
//     /**
//      * Sets that this particular type of file has been stored
//      * within the storage layer for later reference.
//      * 
//      * @param filename Full filename to check
//      */
//     public void setStoredFile(String filename)
//     {
//         for (String key : getFileTypes().keySet())
//         {
//             if (filename.endsWith(key))
//             {
//                 getFileTypes().put(key, true);
//             }
//         }
//     }
// 
//     protected abstract Map<String, Boolean> getFileTypes();
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexException.java
// public class IndexException extends Exception
// {
//     private static final long serialVersionUID = 6617225189161552873L;
//     
//     public IndexException(Exception ie)
//     {
//         super(ie);
//     }
// 
//     public IndexException(String message)
//     {
//         super(message);
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexKey.java
// public class IndexKey
// {
//     private String key;
//     private RepositoryType type = RepositoryType.UNKNOWN;
// 
//     public IndexKey(RepositoryType type, String key)
//     {
//         this.key = key;
//         this.type = type;
//     }
// 
//     public RepositoryType getType()
//     {
//         return type;
//     }
// 
//     public String toPath()
//     {
//         return key;
//     }
// 
//     public String toString()
//     {
//         return type.getLanguage() + ":" + key;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#hashCode()
//      */
//     @Override
//     public int hashCode()
//     {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((key == null) ? 0 : key.hashCode());
//         result = prime * result + ((type.getLanguage() == null) ? 0 : type.getLanguage().hashCode());
//         return result;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#equals(java.lang.Object)
//      */
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj)
//         {
//             return true;
//         }
//         if (obj == null)
//         {
//             return false;
//         }
//         if (getClass() != obj.getClass())
//         {
//             return false;
//         }
//         IndexKey other = (IndexKey) obj;
//         if (key == null)
//         {
//             if (other.key != null)
//             {
//                 return false;
//             }
//         }
//         else if (!key.equals(other.key))
//         {
//             return false;
//         }
//         if (type.getLanguage() != other.type.getLanguage())
//         {
//             return false;
//         }
//         return true;
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/repo/RepositoryType.java
// public enum RepositoryType
// {
//     RELEASE_JAVA(RepositoryLanguage.JAVA), 
//     SNAPSHOT_JAVA(RepositoryLanguage.JAVA), 
//     PROXY_JAVA(RepositoryLanguage.JAVA), 
//     PROXY_PYTHON(RepositoryLanguage.PYTHON),
//     UNKNOWN(RepositoryLanguage.UNKNOWN);
// 
//     private RepositoryLanguage lang;
// 
//     RepositoryType(RepositoryLanguage lang)
//     {
//         this.lang = lang;
//     }
// 
//     public RepositoryLanguage getLanguage()
//     {
//         return lang;
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/storage/IStorageTranslator.java
// public interface IStorageTranslator
// {
//     String[] getDelimiters();
// 
//     IndexKey generateIndexKey(String prefixPath, String prefix) throws IndexException;
// 
//     IndexArtifact generateIndexArtifact(IndexKey key, String uploadPath) throws IndexException;
// 
//     RepositoryType getType();
// 
//     List<IndexKey> getLocalStorageKeys(Path sourcePath) throws LocalStorageException;
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/storage/local/LocalStorageException.java
// public class LocalStorageException extends StorageException
// {
//     private static final long serialVersionUID = -828019302534255082L;
//     
//     public LocalStorageException(Exception exception)
//     {
//         super(exception);
//     }
// }


import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import com.spedge.hangar.index.IndexArtifact;
import com.spedge.hangar.index.IndexException;
import com.spedge.hangar.index.IndexKey;
import com.spedge.hangar.repo.RepositoryType;
import com.spedge.hangar.storage.IStorageTranslator;
import com.spedge.hangar.storage.local.LocalStorageException;
package com.spedge.hangar.repo.python;




public class PythonStorageTranslator implements IStorageTranslator
{
// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexArtifact.java
// public abstract class IndexArtifact implements Serializable
// {
//     private static final long serialVersionUID = -5720959937441417671L;
//     private String location;
// 
//     public IndexArtifact(String location)
//     {
//         this.location = location;
//     }
// 
//     public String getLocation()
//     {
//         return this.location;
//     }
// 
//     /**
//      * Checks if this type of file (on postfix)
//      * has been stored in the storage layer.
//      * 
//      * @param filename Full filename to check
//      * @return True if file has been stored
//      */
//     public boolean isStoredFile(String filename)
//     {
//         for (String key : getFileTypes().keySet())
//         {
//             if (filename.endsWith(key))
//             {
//                 return getFileTypes().get(key);
//             }
//         }
//         return false;
//     }
// 
//     /**
//      * Sets that this particular type of file has been stored
//      * within the storage layer for later reference.
//      * 
//      * @param filename Full filename to check
//      */
//     public void setStoredFile(String filename)
//     {
//         for (String key : getFileTypes().keySet())
//         {
//             if (filename.endsWith(key))
//             {
//                 getFileTypes().put(key, true);
//             }
//         }
//     }
// 
//     protected abstract Map<String, Boolean> getFileTypes();
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexException.java
// public class IndexException extends Exception
// {
//     private static final long serialVersionUID = 6617225189161552873L;
//     
//     public IndexException(Exception ie)
//     {
//         super(ie);
//     }
// 
//     public IndexException(String message)
//     {
//         super(message);
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/index/IndexKey.java
// public class IndexKey
// {
//     private String key;
//     private RepositoryType type = RepositoryType.UNKNOWN;
// 
//     public IndexKey(RepositoryType type, String key)
//     {
//         this.key = key;
//         this.type = type;
//     }
// 
//     public RepositoryType getType()
//     {
//         return type;
//     }
// 
//     public String toPath()
//     {
//         return key;
//     }
// 
//     public String toString()
//     {
//         return type.getLanguage() + ":" + key;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#hashCode()
//      */
//     @Override
//     public int hashCode()
//     {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((key == null) ? 0 : key.hashCode());
//         result = prime * result + ((type.getLanguage() == null) ? 0 : type.getLanguage().hashCode());
//         return result;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#equals(java.lang.Object)
//      */
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj)
//         {
//             return true;
//         }
//         if (obj == null)
//         {
//             return false;
//         }
//         if (getClass() != obj.getClass())
//         {
//             return false;
//         }
//         IndexKey other = (IndexKey) obj;
//         if (key == null)
//         {
//             if (other.key != null)
//             {
//                 return false;
//             }
//         }
//         else if (!key.equals(other.key))
//         {
//             return false;
//         }
//         if (type.getLanguage() != other.type.getLanguage())
//         {
//             return false;
//         }
//         return true;
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/repo/RepositoryType.java
// public enum RepositoryType
// {
//     RELEASE_JAVA(RepositoryLanguage.JAVA), 
//     SNAPSHOT_JAVA(RepositoryLanguage.JAVA), 
//     PROXY_JAVA(RepositoryLanguage.JAVA), 
//     PROXY_PYTHON(RepositoryLanguage.PYTHON),
//     UNKNOWN(RepositoryLanguage.UNKNOWN);
// 
//     private RepositoryLanguage lang;
// 
//     RepositoryType(RepositoryLanguage lang)
//     {
//         this.lang = lang;
//     }
// 
//     public RepositoryLanguage getLanguage()
//     {
//         return lang;
//     }
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/storage/IStorageTranslator.java
// public interface IStorageTranslator
// {
//     String[] getDelimiters();
// 
//     IndexKey generateIndexKey(String prefixPath, String prefix) throws IndexException;
// 
//     IndexArtifact generateIndexArtifact(IndexKey key, String uploadPath) throws IndexException;
// 
//     RepositoryType getType();
// 
//     List<IndexKey> getLocalStorageKeys(Path sourcePath) throws LocalStorageException;
// }
// 
// Path: hangar-api/src/main/java/com/spedge/hangar/storage/local/LocalStorageException.java
// public class LocalStorageException extends StorageException
// {
//     private static final long serialVersionUID = -828019302534255082L;
//     
//     public LocalStorageException(Exception exception)
//     {
//         super(exception);
//     }
// }


// Path: hangar-api/src/main/java/com/spedge/hangar/repo/python/PythonStorageTranslator.java
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import com.spedge.hangar.index.IndexArtifact;
import com.spedge.hangar.index.IndexException;
import com.spedge.hangar.index.IndexKey;
import com.spedge.hangar.repo.RepositoryType;
import com.spedge.hangar.storage.IStorageTranslator;
import com.spedge.hangar.storage.local.LocalStorageException;

package com.spedge.hangar.repo.python;




public class PythonStorageTranslator implements IStorageTranslator
{
    private final String[] delimiters = new String[]{};