Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quellcode-Bibliothek Mongo3Interface.java  Sprache: unbekannt

 
package wrappers;

//import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;

import org.bson.BsonArray;
import org.bson.BsonBoolean;
import org.bson.BsonDateTime;
//import org.bson.BsonDecimal128;
import org.bson.BsonDocument;
import org.bson.BsonDouble;
import org.bson.BsonInt32;
import org.bson.BsonInt64;
import org.bson.BsonNull;
import org.bson.BsonString;
import org.bson.BsonValue;
import org.bson.Document;
import org.bson.conversions.Bson;
//import org.bson.types.Decimal128;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoException;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;

public class Mongo3Interface {
 boolean DEBUG = false;
 String Errmsg = "No error";
 String bvalName = null;
 Set<String> Colnames = null;
 MongoClient client = null;
 MongoDatabase db = null;
 MongoCollection<BsonDocument> coll = null;
 FindIterable<BsonDocument> finditer = null;
 AggregateIterable<BsonDocument> aggiter = null;
 MongoCursor<BsonDocument> cursor = null;
 BsonDocument doc = null;
 BsonDocument util = null;
 BsonNull bsonull = new BsonNull();

 // === Constructors/finalize =========================================
 public Mongo3Interface() {
  this(false);
 } // end of default constructor

 public Mongo3Interface(boolean b) {
  DEBUG = b;
 } // end of constructor

 protected void SetErrmsg(String str) {
  if (DEBUG)
   System.out.println(str);

  Errmsg = str;
 } // end of SetErrmsg

 protected void SetErrmsg(Exception e) {
  if (DEBUG)
   System.out.println(e.getMessage());

  Errmsg = e.toString();
 } // end of SetErrmsg

 public String GetErrmsg() {
  String err = Errmsg;

  Errmsg = "No error";
  return err;
 } // end of GetErrmsg

 public int MongoConnect(String[] parms) {
  int rc = 0;

  if (DEBUG)
   System.out.println("Mongo3: URI=" + parms[0] + " DB=" + parms[1]);

  try {
   MongoClientURI uri = new MongoClientURI(parms[0]);

   client = new MongoClient(uri);

   if (DEBUG)
    System.out.println("Connection " + client.toString() + " established");

   // Now connect to your databases
   db = client.getDatabase(parms[1]);

   // if (parms[2] != null && !parms[2].isEmpty()) {
   // if (DEBUG)
   // System.out.println("user=" + parms[2] + " pwd=" + parms[3]);

   // @SuppressWarnings("deprecation")
   // boolean auth = db.authenticate(parms[2], parms[3].toCharArray());

   // if (DEBUG)
   // System.out.println("Authentication: " + auth);

   // } // endif user

  } catch (MongoException me) {
   SetErrmsg(me);
   rc = -1;
  } catch (Exception e) {
   SetErrmsg(e);
   rc = -3;
  } // end try/catch

  return rc;
 } // end of MongoConnect

 public int MongoDisconnect() {
  int rc = 0;

  try {
   if (cursor != null) {
    if (DEBUG)
     System.out.println("Closing cursor");

    cursor.close();
    cursor = null;
   } // endif client

   if (client != null) {
    if (DEBUG)
     System.out.println("Closing connection");

    client.close();
    client = null;
   } // endif client

  } catch (MongoException se) {
   SetErrmsg(se);
   rc += 8;
  } // end try/catch

  return rc;
 } // end of MongoDisconnect

 public boolean GetCollection(String name) {
  if (DEBUG)
   System.out.println("GetCollection: name=" + name);

  try {
   coll = db.getCollection(name).withDocumentClass(BsonDocument.class);
  } catch (Exception e) {
   SetErrmsg(e);
   return true;
  } // end try/catch

  return false;
 } // end of GetCollection

 public long GetCollSize() {
  return (coll != null) ? coll.count() : 0;
 } // end of GetCollSize

 public boolean FindColl(String query, String fields) {
  if (DEBUG)
   System.out.println("FindColl: query=" + query + " fields=" + fields);

  try {
   if (query != null) {
    Bson dbq = Document.parse(query);
    finditer = coll.find(dbq);
   } else
    finditer = coll.find();

   if (fields != null) {
    Bson dbf = BsonDocument.parse(fields);
    finditer = finditer.projection(dbf);
   } // endif fields

   cursor = finditer.iterator();
  } catch (Exception e) {
   SetErrmsg(e);
   return true;
  } // end try/catch

  return false;
 } // end of FindColl

 @SuppressWarnings("unchecked")
 public boolean AggregateColl(String pipeline) {
  if (DEBUG)
   System.out.println("AggregateColl: pipeline=" + pipeline);

   try {
    Document pipe = Document.parse(pipeline);
    ArrayList<?> pip = (ArrayList<?>) pipe.get("pipeline");

   aggiter = coll.aggregate((List<? extends Bson>) pip);
   cursor = aggiter.iterator();
   } catch (MongoException me) {
    SetErrmsg(me);
   return true;
   } // end try/catch

  return false;
 } // end of AggregateColl

 public boolean Rewind() {
  if (cursor != null)
   cursor.close();

  if (finditer != null)
   cursor = finditer.iterator();
  else if (aggiter != null)
   cursor = aggiter.iterator();

  return (cursor == null);
 } // end of Rewind

 public int ReadNext() {
  try {
   if (cursor.hasNext()) {
    doc = cursor.next();

    if (DEBUG)
     System.out.println("Class doc = " + doc.getClass());

    Colnames = doc.keySet();
    return Colnames.size();
   } else
    return 0;

  } catch (MongoException mx) {
   SetErrmsg(mx);
  } // end try/catch

  return -1;
 } // end of ReadNext

 public boolean Fetch(int row) {
  if (cursor.hasNext()) {
   doc = cursor.next();
   Colnames = doc.keySet();
   return true;
  } else
   return false;

 } // end of Fetch

 public String GetDoc() {
  return (doc != null) ? doc.toJson() : null;
 } // end of GetDoc

 public Set<String> GetColumns() {
  if (doc != null)
   return doc.keySet();
  else
   return null;

 } // end of GetColumns

 public String ColumnName(int n) {
  if (n < Colnames.size())
   return (String) Colnames.toArray()[n];
  else
   return null;

 } // end of ColumnName

 public int ColumnType(int n, String name) {
  // if (rsmd == null) {
  // System.out.println("No result metadata");
  // } else try {
  // if (n == 0)
  // n = rs.findColumn(name);

  // return rsmd.getColumnType(n);
  // } catch (SQLException se) {
  // SetErrmsg(se);
  // } //end try/catch

  return 666; // Not a type
 } // end of ColumnType

 public Object ColumnDesc(Object obj, int n, int[] val, int lvl) {
  Object ret = null;
  BsonValue bval = (BsonValue) ((obj != null) ? obj : doc);
  BsonDocument dob = (bval instanceof BsonDocument) ? (BsonDocument) bval : null;
  BsonArray ary = (bval instanceof BsonArray) ? (BsonArray) bval : null;

  try {
   if (ary != null) {
    bval = ary.get(n);
    bvalName = Integer.toString(n);
   } else if (dob != null) {
    // String[] k = dob.keySet().toArray(new String[0]);
    Object[] k = dob.keySet().toArray();
    bval = dob.get(k[n]);
    bvalName = (String) k[n];
   } else
    bvalName = "x" + Integer.toString(n);

   val[0] = 0; // ColumnType
   val[1] = 0; // Precision
   val[2] = 0; // Scale
   val[3] = 0; // Nullable
   val[4] = 0; // ncol

   if (bval.isString()) {
    val[0] = 1;
    val[1] = bval.asString().getValue().length();
   } else if (bval.isInt32()) {
    val[0] = 7;
    val[1] = Integer.toString(bval.asInt32().getValue()).length();
   } else if (bval.isInt64()) {
    val[0] = 5;
    val[1] = Long.toString(bval.asInt64().getValue()).length();
   } else if (bval.isObjectId()) {
    val[0] = 1;
    val[1] = bval.asObjectId().getValue().toString().length();
   } else if (bval.isDateTime()) {
    Long TS = (bval.asDateTime().getValue() / 1000);
    val[0] = 8;
    val[1] = TS.toString().length();
   } else if (bval.isDouble()) {
    String d = Double.toString(bval.asDouble().getValue());
    int i = d.indexOf('.') + 1;

    val[0] = 2;
    val[1] = d.length();
    val[2] = (i > 0) ? val[1] - i : 0;
   } else if (bval.isBoolean()) {
    val[0] = 4;
    val[1] = 1;
   } else if (bval.isDocument()) {
    if (lvl > 0) {
     ret = bval;
     val[0] = 1;
     val[4] = bval.asDocument().keySet().size();
    } else if (lvl == 0) {
     val[0] = 1;
     val[1] = bval.asDocument().toJson().length();
    } // endif lvl

   } else if (bval.isArray()) {
    if (lvl > 0) {
     ret = bval;
     val[0] = 2;
     val[4] = bval.asArray().size();
    } else if (lvl == 0) {
     val[0] = 1;
     util = new BsonDocument("arr", bval.asArray());
     String s = util.toJson();
     int i1 = s.indexOf('[');
     int i2 = s.lastIndexOf(']');
     val[1] = i2 - i1 + 1;
    } // endif lvl

   } else if (bval.isDecimal128()) {
    val[0] = 9;
    val[1] = bval.asDecimal128().toString().length();
   } else if (bval.isNull()) {
    val[0] = 0;
    val[3] = 1;
   } else {
    SetErrmsg("Type " + bval.getBsonType() + " of " + bvalName + " not supported");
    val[0] = -1;
   } // endif's

   return ret;
  } catch (Exception ex) {
   SetErrmsg(ex);
  } // end try/catch

  val[0] = -1;
  return null;
 } // end of ColumnDesc

 public String ColDescName() {
  return bvalName;
 } // end of ColDescName

 protected BsonValue GetFieldObject(String path) {
  BsonValue o = doc;
  BsonDocument dob = null;
  BsonArray ary = null;
  String[] names = null;

  if (path == null || path.equals("") || path.equals("*"))
   return doc;
  else if (o instanceof BsonDocument)
   dob = doc;
  else if (o instanceof BsonArray)
   ary = (BsonArray) o;
  else
   return doc;

  try {
   names = path.split("\\.");

   for (String name : names) {
    if (ary != null) {
     o = ary.get(Integer.parseInt(name));
    } else
     o = dob.get(name);

    if (o == null)
     break;

    if (DEBUG)
     System.out.println("Class o = " + o.getClass());

    if (o instanceof BsonDocument) {
     dob = (BsonDocument) o;
     ary = null;
    } else if (o instanceof BsonArray) {
     ary = (BsonArray) o;
    } else
     break;

   } // endfor name

  } catch (IndexOutOfBoundsException x) {
   o = null;
  } catch (MongoException me) {
   SetErrmsg(me);
   o = null;
  } // end try/catch

  return o;
 } // end of GetFieldObject

 public String GetField(String path) {
  BsonValue o = GetFieldObject(path);

  if (o != null) {
   if (o.isString()) {
    return o.asString().getValue();
   } else if (o.isInt32()) {
    return Integer.toString(o.asInt32().getValue());
   } else if (o.isInt64()) {
    return Long.toString(o.asInt64().getValue());
   } else if (o.isObjectId()) {
    return o.asObjectId().getValue().toString();
   } else if (o.isDateTime()) {
    Integer TS = (int) (o.asDateTime().getValue() / 1000);
    return TS.toString();
   } else if (o.isDouble()) {
    return Double.toString(o.asDouble().getValue());
   } else if (o.isBoolean()) {
    return o.asBoolean().getValue() ? "1" : "0";
   } else if (o.isDocument()) {
    return o.asDocument().toJson();
   } else if (o.isArray()) {
    util = new BsonDocument("arr", o.asArray());
    String s = util.toJson();
    int i1 = s.indexOf('[');
    int i2 = s.lastIndexOf(']');
    return s.substring(i1, i2 + 1);
   } else if (o.isDecimal128()) {
    return o.asDecimal128().toString();
   } else if (o.isNull()) {
    return null;
   } else
    return o.toString();

  } else
   return null;

 } // end of GetField

 public Object MakeBson(String s, int json) {
  BsonValue bval;

  if (json == 1)
   bval = BsonDocument.parse(s);
  else if (json == 2)
   bval = BsonArray.parse(s);
  else
   bval = null;

  return bval;
 } // end of MakeBson

 protected BsonValue ObjToBson(Object val, int json) {
  BsonValue bval = null;

  if (val == null)
   bval = bsonull;
  else if (val.getClass() == String.class) {
   if (json == 1)
    bval = BsonDocument.parse((String) val);
   else if (json == 2)
    bval = BsonArray.parse((String) val);
   else
    bval = new BsonString((String) val);

  } else if (val.getClass() == Integer.class)
   bval = new BsonInt32((int) val);
  else if (val.getClass() == Double.class)
   bval = new BsonDouble((double) val);
  else if (val.getClass() == BigInteger.class)
   bval = new BsonInt64((long) val);
  else if (val.getClass() == Boolean.class)
   bval = new BsonBoolean((Boolean) val);
  else if (val.getClass() == Date.class)
   bval = new BsonDateTime(((Date) val).getTime() * 1000);
  else if (val.getClass() == BsonDocument.class)
   bval = (BsonDocument) val;
  else if (val.getClass() == BsonArray.class)
   bval = (BsonArray) val;
  // else if (val.getClass() == BigDecimal.class)
  // bval = new BsonDecimal128((BigDecimal) val);

  return bval;
 } // end of ObjToBson

 public Object MakeDocument() {
  return new BsonDocument();
 } // end of MakeDocument

 public boolean DocAdd(Object bdc, String key, Object val, int json) {
  try {
   ((BsonDocument) bdc).append(key, ObjToBson(val, json));
  } catch (MongoException me) {
   SetErrmsg(me);
   return true;
  } // end try/catch

  return false;
 } // end of DocAdd

 public Object MakeArray() {
  return new BsonArray();
 } // end of MakeArray

 public boolean ArrayAdd(Object bar, int n, Object val, int json) {
  try {
   for (int i = ((BsonArray) bar).size(); i < n; i++)
    ((BsonArray) bar).add(bsonull);

   ((BsonArray) bar).add(ObjToBson(val, json));
  } catch (MongoException me) {
   SetErrmsg(me);
   return true;
  } catch (Exception ex) {
   SetErrmsg(ex);
   return true;
  } // end try/catch

  return false;
 } // end of ArrayAdd

 public boolean CollInsert(Object dob) {
  try {
   coll.insertOne((BsonDocument) dob);
  } catch (MongoException me) {
   SetErrmsg(me);
   return true;
  } catch (Exception ex) {
   SetErrmsg(ex);
   return true;
  } // end try/catch

  return false;
 } // end of CollInsert

 public long CollUpdate(Object upd) {
  long n = -1;

  if (DEBUG)
   System.out.println("upd: " + upd.toString());

  try {
   UpdateResult res = coll.updateOne(Filters.eq("_id", doc.get("_id")), (Bson) upd);

   if (DEBUG)
    System.out.println("CollUpdate: " + res.toString());

   n = res.getModifiedCount();
  } catch (MongoException me) {
   SetErrmsg(me);
  } catch (Exception ex) {
   SetErrmsg(ex);
  } // end try/catch

  return n;
 } // end of CollUpdate

 public long CollDelete(boolean all) {
  long n = -1;

  try {
   DeleteResult res;

   if (all)
    res = coll.deleteMany(new Document());
   else
    res = coll.deleteOne(Filters.eq("_id", doc.get("_id")));

   if (DEBUG)
    System.out.println("CollDelete: " + res.toString());

   n = res.getDeletedCount();
  } catch (MongoException me) {
   SetErrmsg(me);
  } catch (Exception ex) {
   SetErrmsg(ex);
  } // end try/catch

  return n;
 } // end of CollDelete

} // end of class Mongo3Interface

Messung V0.5 in Prozent
C=87 H=99 G=93

[Seitenstruktur0.8Druckenetwas mehr zur Ethik2026-10-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....
    

Besucher

Besucher

Statistik
#Sources=1126864
#Domains=1897691