Generatore Random di File System

di il
4 risposte

Generatore Random di File System

Ciao a tutti, ho un disperato bisogno di aiuto per quanto riguarda un simulatore che mi trovo costretto a implementare per testare un'app.
Ho cercato già aiuto pure su qualche gruppo fb qualche settimana fa, ma le risposte non sono state soddisfacenti.

Questo simulatore, o generatore, deve creare in maniera random una specie di File System Virtuale, quindi Directory e File, però in maniera fittizia e non realmente, perché poi tutto deve essere rappresentato così com'è in un file Json che servirà per il test.

Ogni directory e file avrà questi attributi:

-Name(Nome delle Directory o del File).
-Type(Se è una Directory o un File)
-Parent(Che identifica tutto il percorso dove è la Directory o il File in questione, ad es. Il File5 sarà dentro D1 e D2 e quindi questo campo sarà "D1/D2")
-Level(A che livello si trova il file o la directory, es. 0 per Root, e via dicendo)
-Id(Che identifica univocamente quella directory o file)

Visto la presenza di padri e figli la cosa più naturale e credo la più giusta è quella di implementare un albero.
E ho provato qualcosa del genere:

public class TreeStruct {

    private String name;
    private String type;
    private String parent;
    private int level;
    private long id;
    private List<TreeStruct> children = new ArrayList<>();

    public List<TreeStruct> getChildren() {
        return Collections.unmodifiableList(children);
    }

    public void setChildren(List<TreeStruct> children) {
        this.children = children;
    }

    public void addChildFolder(TreeStruct treestruct) {
        this.children.add(treestruct);
    }
    
    //E poi di conseguenza i vari set e get.......//
Per quanto riguarda il livello 0(Root) la cosa viene semplice crearla perché nessuno ha parent(quindi come campo si ha"null"), però scendendo di livello dovrei creare dei File o Directory che prendono casualmente come padre qualche Directory del livello Superiore e settino il loro campo con il giusto percorso dal quale derivano. Chiaramente imposto un massimo numero di livelli fino a dove scendere e un massimo numero di elementi da creare per ogni livello.

Avete idea di come procedere? Sono nuovo del linguaggio Java e può esserci anche qualche errore sia sul tipo di approccio che sulla struttura dati che sto usando, ma spero di essere stato abbastanza chiaro. Poi posso mettere anche quello che ho fatto per ora nel main, anche se si tratta di creare solo il primo livello.
Per adesso l'ho escluso per non rendere troppo lungo e pesante il post.

4 Risposte

  • Re: Generatore Random di File System

    Parent non mi sembra un granchè
  • Re: Generatore Random di File System

    +m2+ ha scritto:


    Parent non mi sembra un granchè
    E che dovrei fare?
  • Re: Generatore Random di File System

    alex85 ha scritto:


    Questo simulatore, o generatore, deve creare in maniera random una specie di File System Virtuale, quindi Directory e File, però in maniera fittizia e non realmente, perché poi tutto deve essere rappresentato così com'è in un file Json che servirà per il test.
    Se (come sto immaginando, vedendo il tuo codice) vuoi "modellare" in classi/oggetti una ipotetica struttura di un file-system, allora sappi che in generale NON c'è un unico modo per farlo.
    Ci possono essere svariati approcci. E ad esempio, una prima cosa da stabilire è se si vuole definire tipi ben distinti per file e directory oppure solo uno che rappresenta un "item" del file-system, che al suo interno "flagga" se è un file O directory.
  • Re: Generatore Random di File System

    andbin ha scritto:


    alex85 ha scritto:


    Questo simulatore, o generatore, deve creare in maniera random una specie di File System Virtuale, quindi Directory e File, però in maniera fittizia e non realmente, perché poi tutto deve essere rappresentato così com'è in un file Json che servirà per il test.
    Se (come sto immaginando, vedendo il tuo codice) vuoi "modellare" in classi/oggetti una ipotetica struttura di un file-system, allora sappi che in generale NON c'è un unico modo per farlo.
    Ci possono essere svariati approcci. E ad esempio, una prima cosa da stabilire è se si vuole definire tipi ben distinti per file e directory oppure solo uno che rappresenta un "item" del file-system, che al suo interno "flagga" se è un file O directory.
    Sì immagino ci siano svariati approcci, però vorrei trovarne almeno uno che mi risolva questa cosa del parent , io per adesso l'ho pensata con un boolean IsDir che in un ciclo for che scandisce i livelli e poi uno gli elementi, mi sceglie ogni volta random se creare un file o una dir e fin quì non ci sono problemi.

    Il problema mio è come poi scegliere in maniera random qualcuna delle cartelle del livello superiore e inserire i figli con il campo parent poi settato correttamente.
Devi accedere o registrarti per scrivere nel forum
4 risposte