Vergabe von undeklarieten Werten

Bitte aktiviere JavaScript!
Hallo Leute,

ich habe eine Frage, ich weiss leider nicht, ob es möglich wäre,
wir haben ein System, es generiert Projektnummern automatik, die Projektnummer werden noch für weitere Aufgabe in System gebraucht, die Projektnummer werden, wie folgt deklariert
Java:
public List<String> PROJ_LIST =new ArrayList<String>();
die Projektnummer haben die folgende Struktur Jarhgang+auto-increment, das heisst wir sind im Jahr 2019, die Projektnummer sieht wie folgt 2019XXX
im Jahr 2020 werden die 2020XXX.
Meine Aufgabe(Code) sollte einfach alle Projekt bearbeiten, die schon existiert und die in der Zukunkft generieren werden, dafür braucht die Projektnummer .
Ich wollte wissen, wie kann ich die Variable PROJ_LIST deklariert oder anpassen, damit die Aufgabe in der zukunft alle Projekt automatik bearbeitet,
bis jetzt habe ich das händisch gemacht, jedes mal ein neues Projekt erstellt wurde, bin ich in meiner Aufgabe zurück und habe ich di neue Projektnummer vergeben.
Wenn ich irgendwo unklar war einfach mal fragen

Viel Dank im Voraus
 
Wenn ich irgendwo unklar war einfach mal fragen
Ich frag einfach mal :) Die Projektnummern stehen in einer Datenbank? Oder sollst Du nur die Projektnummern in der Liste auf das aktuelle Jahr anpassen?

Java:
public static List<String> aendereProjektnummern(List<String> bestehendeProjektnummern, String prefix) {
    return bestehendeProjektnummern.stream()
        .map(alteNr -> new StringBuilder(prefix).append(alteNr.subString(4)).toString())
        .collect(Collectors.toList());
}
Java:
List<String> neueNummern = aendereProjektnummern(alteNummern, "2020");
 
Hallo Mihe,

ja, die Projektnummer stehen in einer Datenbank
und werden aufgerufen, wenn in meiner Aufgabe gebraucht wird
 
also ich versuche es anders mich auszudrücken,
nehme wir an, wir haben mehrere Projekte mit dem folgende Projektnummer:
1990345, 2001970, 2002456, 2003567, 2004098, 2005123, 2006165, 2007875, 2008489, 2008035, 2009089, 2010345, 2011078,
2012067, 2013213, 2014890, 2015045, 2016097, 2016551, 2017001, 2018444, 2019453 ... ca. 4000 Projektnummer, und in der zukunft sollte noch weiter dazu kommen.

Jetzt haben wir ein Code es sollte etwas bestimmtes in jedem Projekt bearbeiten, um jedes Projekt zu bearbeiten braucht es die Projektnummer, in dem Moment ein Projekt erstellt wird kann das Code anfangen zu bearbeiten.

Leider können wir nicht in unserem Code die Variable PROJ_LIST nur mit existierender Projektnummer arbeiten, obwohl es uns klar dass einige projektnummer weiter erstellt werden, mit der strucktur Jahrgang+xxx, wobei x den Wert {0,1,2,3,4,5,6,7,8,9} nehmen
könnte.
wie kann ich es lösen.
 
so habe ich es in meinem Code geschrieben worden
wobei
Java:
private QueryOperandList _prjQOList = new QueryOperandList();
  • QueryOperandList
    public QueryOperandList()
    Creates an empty query operand list.
Java:
 if (PROJ_LIST == null || PROJ_LIST.isEmpty() || PROJ_LIST.size()<1){
            PROJ_LIST.add("2019003");
        }
        List<QueryOperand> prjListQO = new ArrayList<QueryOperand>();
        for ( String projnr:PROJ_LIST){
            prjListQO.add(new Constant(projnr));
        }
        _prjQOList = new QueryOperandList(prjListQO);
 
Zuletzt bearbeitet:
Tut mir leid, ich kann immer noch nicht folgen. Kannst Du Deine Frage mal auf Englisch formulieren, vielleicht wird dannn einiges klarer.

nehme wir an, wir haben mehrere Projekte mit dem folgende Projektnummer:
1990345, 2001970, 2002456, 2003567, 2004098, 2005123, 2006165, 2007875, 2008489, 2008035, 2009089, 2010345, 2011078,
2012067, 2013213, 2014890, 2015045, 2016097, 2016551, 2017001, 2018444, 2019453 ... ca. 4000 Projektnummer, und in der zukunft sollte noch weiter dazu kommen.
Das verstehe ich. Den Rest leider nicht.

Nachtrag: ah, Idee: willst Du, dass beim Anlegen eines neuen Projekts ein bestimmter Code ausgeführt wird (also eine Art "on create event")? Oder willst Du vielleicht beim Anlegen eines neuen Projekts die Nummer automatisch generieren?
 
Tut mir leid, ich kann immer noch nicht folgen. Kannst Du Deine Frage mal auf Englisch formulieren, vielleicht wird dannn einiges klarer.


Das verstehe ich. Den Rest leider nicht.

Nachtrag: ah, Idee: willst Du, dass beim Anlegen eines neuen Projekts ein bestimmter Code ausgeführt wird (also eine Art "on create event")? Oder willst Du vielleicht beim Anlegen eines neuen Projekts die Nummer automatisch generieren?
nichts davon
also, möchte ich in der Lage alle projekte mit meinem Code zu bearbeiten, wie gesagt bis jetzt muss ich immer in meinem Code händisch die Projektnummer eingeben, dann bearbeitet den Code das Projekt. das heisst sollte einfach alle existierende Projekte zu bearbeiten, ohne jedes mal in meinem Script jede Projektnummer einzugeben, wie in dem Stückcode, habe ich 2019003 eingegeben.

Übrigens Fränzösisch kann ich
 
Wenn die Projekte in einer Datenbank sind und du alle Projekte bearbeiten willst, dann frag doch einfach die Datenbank nach allen Projektcodes ab und schon kannst Du alle bearbeiten....
 
Wenn die Projekte in einer Datenbank sind und du alle Projekte bearbeiten willst, dann frag doch einfach die Datenbank nach allen Projektcodes ab und schon kannst Du alle bearbeiten....
Hi Knietzel,
siehst du schon ganz oben, in dem Stückcode es funktioniert schon, leider muss ich jedes mal eine Projektnummer eingeben
 
Du wirst doch in Deinem Code irgendeine Möglichkeit haben, alle Projekte/-nummern abzurufen? Wenn nicht, musst Du die Möglichkeit schaffen.
 
Du solltest Dir anschauen, welche Query-Methoden Du zur Verfügung hast (gibt es noch andere außer QueryOperandList?)

Oder hast Du die Query-Methoden implementiert?
 
Ich wollte wissen, wie kann ich die Variable PROJ_LIST deklariert oder anpassen, damit die Aufgabe in der zukunft alle Projekt automatik bearbeitet,
Vielleicht ist die Projektbeschreibung zuerst auf Französisch formuliert und dann via Übersetzer gepostet einfacher zu verstehen: https://translate.google.fr/#view=home&op=translate&sl=fr&tl=de
Trotzdem ein Rateversuch: für die existierenden und noch zu kreierenden Projektnummern soll eine sogenannte dynamische Arraylist verwendet werden, z.B. https://www.geeksforgeeks.org/arraylist-in-java/, https://www.tutorialspoint.com/java/java_arraylist_class
 
Hi ML,
ich glaube mit alles was wir schon geschrieben haben, kannst du besser nachvollziehen, der stückcode funktioniert sehr gut leider muss ich jedes mal eine Projektnummer händisch eingeben.
 
Zuletzt bearbeitet:
Ich versuche mich mal im Raten:

Was ich glaube, sicher verstanden zu haben:
-Du willst über alle Projekte iterieren um irgendwas zu tun.

Was ich annehme:
-Du kannst ein Projekt anhand seiner Projektnummer aufrufen. Allerdings ist diese Funktion die einzige (dir bekannte?) Möglichkeit, an die Projekte zu kommen.

Daraus folgere ich:
-Dein Plan ist, alle möglichen Projektnummern zu erraten (sind ja nur maximal 999 Projekte/Jahr) und auf diese Weise alle Projektnummern zu erhalten?

Ist das korrekt?
 
Das generiert dir alle theoretisch möglichen Projektnummern. Ob alle Projektnummern existieren, ist erstmal eine andere Frage.

Java:
public static void main(String[] args) {
        ArrayList<String> projects;
        final int fromYear = 1730, toYear = 2019;
        String s;

        DecimalFormat df = new DecimalFormat("000");
        projects = new ArrayList<>();

        System.out.println("Generierte Projektnummern:");
        for (int year = fromYear; year <= toYear; year++) {
            for (int cnt = 0; cnt <= 999; cnt++) {
                s = Integer.toString(year) + df.format(cnt);
                projects.add(s);
                System.out.println(s);
            }
        }
    }
mihe7 hätte das wahrscheinlich wieder mit funktionalen Ausdrücken erschlagen, aber vielleicht krieg ich das irgendwann auch noch hin. :D
 
mihe7 hätte das wahrscheinlich wieder mit funktionalen Ausdrücken erschlagen, aber vielleicht krieg ich das irgendwann auch noch hin. :D
zB:
Java:
Stream<String> projects = rangeClosed(1730,2019).mapToObj(i->i)
        .flatMap(year -> range(0,1000)
            .mapToObj(nr ->
                format("%04d%03d",year, nr)));
(Man könnte tendenziell auch erst auf einen passenden Typ mappen, statt direkt in den String (wäre ziemlich cool, wenn man dafür irgendwann Records nutzen könnte...)

Java:
class ProjectNr { int year; int nr; /*...*/ }

Stream<String> projects = rangeClosed(1730,2019).mapToObj(i->i)
        .flatMap(year -> range(0,1000)
        .mapToObj(nr -> new ProjectNr(year, nr)))
        .map(projectNr -> format("%04d%03d",projectNr.year, projectNr.nr))
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben