示例#1
0
int pruebaAlmacenamientoBufferCache(char nombre_archivo[] ){
	AtributoVariable<string> nombre("N");
	AtributoVariable<int> numeros("#");
	AtributoFijo<int> num("n");
	Registro registro(3,&nombre,&numeros,&num);
	Bloque bloque(&registro);
	Clave clave(&registro,1,"N");
	ComparadorRegistroVariable comparador;
	EABloques estrategia(&bloque,125,0.8f);
	estrategia.setClave(&clave);
	estrategia.setComparador(&comparador);
	Archivo archivo(&estrategia);
	AlmacenamientoBufferCache cache(&archivo,5);
	/*archivo original*/
	cache.crear(nombre_archivo);
	for(int i=0;i<5;i++){
		*(AtributoVariable<string>*)registro.get(0)=Terminos::obtenerTermino(i).c_str();
		((AtributoVariable<int>*)registro.get(1))->getVector().clear();
		for(int j=0;j< i%4+1;j++){
			((AtributoVariable<int>*)registro.get(1))->getVector().push_back(j);
		};
		*((AtributoFijo<int>*)registro.get(2))=i;
		if(not ((Almacenamiento&)cache).insertar(&registro))
			cout<<"Problema"<<endl;
	}
	cache.imprimir(cout);
	cache.cerrar();
	archivo.setEstrategia(&estrategia);
	archivo.abrir(nombre_archivo);
	archivo.imprimir(cout);
	archivo.cerrar();
	return 0;
}
示例#2
0
void GNC::GUI::AnonymizePanel::OnCheckComentarios( wxCommandEvent& /*event*/ )
{
        //descripcion del estudio, serie e imagenes
        //estudio
        {
                std::string clave("0008|1030");
                Anonymize(clave,m_pCheckComentarios->IsChecked());
        }
        //serie
        {
                std::string clave("0008|103e");
                Anonymize(clave,m_pCheckComentarios->IsChecked());
        }
        //imagen
        {
                std::string clave("0020|4000");
                Anonymize(clave,m_pCheckComentarios->IsChecked());
        }
}
示例#3
0
int pruebaEstrategiaCompresionArbol(){
	/*************************Creacion Arbol***************************/
	Referencia ref=0;
	AtributoFijo<char*> nombre("miStringID",15);
	char unNombre[15]="abaco";
	nombre.set(unNombre);
	Registro reg(1,&nombre);
	Clave clave(&reg,1,"miStringID");
	BSharpTree* arbol = new BSharpTree(&clave);
	ComparadorClave* comparador = new ComparadorRegistroVariable();
	string nombreArbol = "Arbol";
	string nombreArbol2 = "Arbol2";
	string nombreComprimido = "ArbolComprimido";
	unsigned int tamanioBloque = 128;
	arbol->crear(nombreArbol,tamanioBloque,&clave,comparador);
	for(int i=0;i<70;i++){
		strncpy(unNombre,Terminos::obtenerTermino(i).data(),15);
		nombre.set(unNombre);
		Registro reg1(1,&nombre);
		Clave clave1(&reg1,1,"miStringID");
		//std::cout<<clave1.getAtributo("miStringID")<<std::endl;
		arbol->insertar(ref,&clave1);
	}
	for(int i=0;i<30;i++){
		strncpy(unNombre,Terminos::obtenerTermino(i).data(),15);
		nombre.set(unNombre);
		Registro reg1(1,&nombre);
		Clave clave1(&reg1,1,"miStringID");
		//std::cout<<clave1.getAtributo("miStringID")<<std::endl;
		arbol->eliminar(&clave1);
	}
	arbol->imprimir();
	//arbol->cerrar();
	string nombreArchivo = arbol->getNombreArchivo();
	/*delete comparador;
	delete arbol;*/
	/************************COMPRIMIENDO*****************************/
	EstrategiaCompresion compresion;
	compresion.compresionArbol(arbol,nombreComprimido,128);
	arbol->cerrar();
	delete arbol;
	//compresion.compresionIndice(nombreArchivo,nombreComprimido,128);
	/************************DESCOMPRIMIENDO**************************/
	BSharpTree* arbol2 = new BSharpTree(&clave);
	ComparadorClave* comparador2 = new ComparadorRegistroVariable();
	//compresion.descompresionInsdice(nombreComprimido,nombreArchivo);
	//arbol2->abrir(nombreArbol2,nombreArbol,comparador2);
	//arbol2->abrir(nombreArbol2,nombreArbol,comparador2);
	compresion.descompresionArbol(arbol2,nombreComprimido);
	arbol2->imprimir();
	delete arbol2;
	delete comparador2;
	return 0;
}
示例#4
0
void GNC::GUI::AnonymizePanel::GetTagsAnonymized(GIL::DICOM::DicomDataset & base)
{
        base.tags.clear();
        GNC::GCS::IConfigurationController::TListGroups configGroups;
        for (wxPropertyGridIterator it = m_pTagsList->GetIterator(); ! it.AtEnd(); ++it) {
                wxPGProperty* prop = it.GetProperty();
                if(prop->GetFlags() & wxPG_PROP_MODIFIED) {
                        std::string clave(prop->GetHelpString().ToUTF8());
                        std::string valor(prop->GetValueAsString().ToUTF8());
                        base.tags[clave] = valor;

                        GNC::GCS::IConfigurationController::TMapValues group;
                        group["tag"] = clave;
                        group["value"] = valor;
                        configGroups.push_back(group);
                }
        }
        GNC::GCS::IConfigurationController::Instance()->writeGroupUser("/Core/AnonymizationSelection", configGroups);
}
示例#5
0
int Clave::hidratar(char* bloque){

	//Devuelve la cantidad de bytes hidratados
	int bytesLeidos = 0;
	unsigned int tamanioInt = sizeof(unsigned int);
	unsigned int tamanioClave;

	memcpy((char*)&tamanioClave, bloque, tamanioInt);
	bytesLeidos += tamanioInt;

	char bloqueAux[tamanioClave];
	memcpy(bloqueAux, bloque + tamanioInt, tamanioClave);
	bytesLeidos += tamanioClave;

	string clave(bloqueAux);
	//Seteo la clave nueva
	this->setClave(clave);

	return bytesLeidos;

}
示例#6
0
文件: pe14-5.c 项目: jnksu/CPP
int main(int argc, char ** argv)
{
	STUDENT carr[CSIZE];
	int count = 0;
	int index;
	
	printf("Please enter the first name.\n");
	printf("Press [enter] at the start of a line to stop.\n");
	
	while(count < CSIZE && 
		fgets(carr[count].user.fname, NAMELEN, stdin) &&
			carr[count].user.fname[0] != '\n')
	{
		reject_ch(carr[count].user.fname, '\n');
		
		printf("Now enter the last name.\n");
		fgets(carr[count].user.lname, NAMELEN, stdin);
		reject_ch(carr[count].user.lname, '\n');
			
		for(index = 0; index < COURSE; index++){
			printf("Enter the grade: ");
			carr[count].grade[index] = get_float();
		}
		
		count++;
		
		if(count < CSIZE)
			printf("Enter the next.\n");
	}
	
	if(count > 0){
		clave(carr, count);
		shin(carr, count);
		shav(carr, count);
	}else{
		printf("No student?Too bad.\n");
	}
	exit(EXIT_SUCCESS);	
}
示例#7
0
int pruebaEstragiaCompresionAlmacenamiento1(char nombre_archivo[]){
	AtributoVariable<string> nombre("N");
	AtributoVariable<int> numeros("#");
	AtributoFijo<int> num("n");
	Registro registro(3,&nombre,&numeros,&num);
	Bloque bloque(&registro);
	Clave clave(&registro,1,"N");
	ComparadorRegistroVariable comparador;
	EstrategiaCompresion compresion;
	EABloques estrategia(&bloque,125,0.8f);
	estrategia.setClave(&clave);
	estrategia.setComparador(&comparador);
	Archivo archivo(&estrategia);
	/*archivo original*/
	archivo.crear(nombre_archivo);
	if(not compresion.descompresion(&archivo)){
		for(int i=0;i<5;i++){
			*(AtributoVariable<string>*)registro.get(0)=Terminos::obtenerTermino(i).c_str();
			((AtributoVariable<int>*)registro.get(1))->getVector().clear();
			for(int j=0;j< i%4+1;j++){
				((AtributoVariable<int>*)registro.get(1))->getVector().push_back(j);
			};
			*((AtributoFijo<int>*)registro.get(2))=i;
			if(not ((Almacenamiento&)archivo).insertar(&registro))
				cout<<"Problema"<<endl;
		}
		//archivo.imprimir(cout);
		compresion.compresion(&archivo,512);
		cout<<"/***************COMPRIMIENDO************************/"<<endl;
	}else{
		archivo.imprimir(cout);
		cout<<"/***************DESCOMPRIMIDO**********************/"<<endl;
	}
	archivo.cerrar();
	remove(nombre_archivo);
	return 0;
}
void BPlusTree::exportNode(ofstream& salida, Node* unNodo, int tabulacion,bool keyText,bool textContent) {

	if (unNodo->isLeaf()) {

		LeafNode *unNodoHoja = static_cast<LeafNode*> (unNodo);
		salida << endl;
		for(int i = 0 ; i < tabulacion ; i++)
			salida << "  ";

		salida << "Numero: " << unNodoHoja->number << "  Nivel: " << unNodoHoja->level << "  Cant.Elem: " << unNodoHoja->keyMount
			   << "  Esp.Libre: " << TreeConstraits::getEfectiveSizeNode() - unNodoHoja->occupiedSpace << "  Hoja.Sig: " << unNodoHoja->nextLeaf << endl;

		for (int posicion = 0; posicion < unNodoHoja->keyMount; ++posicion) {

			for(int i = 0 ; i < tabulacion + 4 ; i++)
						salida << "  ";

			salida << "(";

			Key unaClave = unNodoHoja->keys[posicion];
			if(keyText)
			{
				salida << unaClave.toString();
			}
			else
			{
				ByteString clave(unaClave.toString());
				salida << Utility::toString(clave.readAsInt(0));
			}

			salida << ";";
			ByteString unDato = unNodoHoja->byteData[posicion];
			if(textContent)
			{
				salida << unDato.toString();
			}
			else
			{
				salida << Utility::intToString(unDato.readAsInt(0));
			}

			salida << ")";

			salida << (unaClave.getSize() + unDato.getSize() + TreeConstraits::getControlSizeRecord()) << endl;
		}

		salida << endl;

	} else {

		InnerNode *unNodoInterior = static_cast<InnerNode*> (unNodo);
		salida << endl << endl;
		for(int i=0; i<tabulacion ; i++)
			salida << "  ";

		salida << "Numero: " << unNodoInterior->number << "  Nivel: " << unNodoInterior->level << "  Cant.Elem: " << unNodoInterior->keyMount
			   << "  Esp.Libre: " << TreeConstraits::getEfectiveSizeNode() - unNodoInterior->occupiedSpace << endl;

		for (int posicion = 0; posicion <= unNodoInterior->keyMount; ++posicion) {

			if (posicion < unNodoInterior->keyMount) {
				Key unaClave = unNodoInterior->keys[posicion];

				for(int i=0; i<(tabulacion+1) ; i++)
					salida << "  ";
				salida << "(";
				if(keyText)
				{
					salida << unaClave.toString();
				}
				else
				{
					ByteString clave(unaClave.toString());
					salida << Utility::toString(clave.readAsInt(0));
				}
				salida << ")";
				salida << unaClave.getSize();
				salida << "  ";
				salida << unNodoInterior->getSons()[posicion] << "   ";
			}
		}
		for (int posicion = 0; posicion <= unNodoInterior->keyMount; ++posicion) {
			Node *hijo = hidratateNode(unNodoInterior->sons[posicion]);
			exportNode(salida, hijo, tabulacion + 2,keyText,textContent);
			if (hijo)
				freeNodeMemory(hijo);
		}
		for(int i=0; i<tabulacion ; i++)
			salida << "  ";
		salida << endl;
	}
}
void ClassifBPlusTree::exportNode(ofstream& salida, Node* unNodo, int tabulacion,bool keytext, bool textContent) {

	if (unNodo->isLeaf()) {

		LeafNode *unNodoHoja = static_cast<LeafNode*> (unNodo);
		salida << endl;
		for(int i = 0 ; i < tabulacion ; i++)
			salida << "  ";

		salida << "Numero: " << unNodoHoja->number << "  Nivel: " << unNodoHoja->level << "  Cant.Elem: " << unNodoHoja->keyMount << "  Esp.Libre: " << TreeConstraits::getEfectiveSizeNode() - unNodoHoja->occupiedSpace << "  Hoja.Sig: " << unNodoHoja->nextLeaf << endl;

		for (int posicion = 0; posicion < unNodoHoja->keyMount; ++posicion) {

			for(int i = 0 ; i < tabulacion + 4 ; i++)
						salida << "  ";

			salida << "(";

			Key unaClave = unNodoHoja->keys[posicion];
			if(keytext)
			{
				salida << unaClave.toString();
			}
			else
			{
				ByteString clave(unaClave.toString());
				if(clave.getSize()==(2*sizeof(int)))
				{
					salida << Utility::toString(clave.readAsInt(0));
					salida << "-";
					salida << Utility::toString(clave.readAsInt(sizeof(int)));
				}
				else
					salida << Utility::toString(clave.readAsInt(0));
			}

			salida << ";";

			ByteString unDato = unNodoHoja->byteData[posicion];

			int idBlock = unDato.readAsInt(0);
			string datoString = Utility::intToString(idBlock);
			salida << datoString;

			salida << ")";

			salida << (unaClave.getSize() + unDato.getSize() + TreeConstraits::getControlSizeRecord()) << endl;

			for(int i = 0 ; i < tabulacion + 4 ; i++)
								salida << "  ";

			ListofID listOfID(this->fileBlockManager,idBlock);
			list<int> listOfInt = listOfID.getListID();
			list<int>::iterator it;

			int id;
			//int count = 0;
			ByteString bs;
			unsigned int i = 0;
			for(it=listOfInt.begin();it!=listOfInt.end();++it)
			{
				i++;
				id = *it;
				bs.insertLast(Utility::intToString(id));
				bs.insertLast(" ");
				if((i == listOfInt.size()) || (bs.toString().size() >80))
				{
					salida << bs.toString();
					salida << endl;
					if(i != listOfInt.size())
					{
						for(int i = 0 ; i < tabulacion + 4 ; i++)
											salida << "  ";
					}
					bs.clean();
				}
			}

		}

	} else {

		InnerNode *unNodoInterior = static_cast<InnerNode*> (unNodo);
		salida << endl << endl;
		for(int i=0; i<tabulacion ; i++)
			salida << "  ";

		salida << "Numero: " << unNodoInterior->number << "  Nivel: " << unNodoInterior->level << "  Cant.Elem: " << unNodoInterior->keyMount
			   << "  Esp.Libre: " << TreeConstraits::getEfectiveSizeNode() - unNodoInterior->occupiedSpace << endl;

		for (int posicion = 0; posicion <= unNodoInterior->keyMount; ++posicion) {

			if (posicion < unNodoInterior->keyMount) {
				Key unaClave = unNodoInterior->keys[posicion];

				for(int i=0; i<(tabulacion+1) ; i++)
					salida << "  ";
				salida << "(";
				if(keytext)
				{
					salida << unaClave.toString();
				}
				else
				{
					ByteString clave(unaClave.toString());
					salida << Utility::toString(clave.readAsInt(0));
				}
				salida << ")";
				salida << unaClave.getSize();
				salida << "  ";
				salida << unNodoInterior->getSons()[posicion] << "   ";
			}
		}
		for (int posicion = 0; posicion <= unNodoInterior->keyMount; ++posicion) {
			Node *hijo = hidratateNode(unNodoInterior->sons[posicion]);
			exportNode(salida, hijo, tabulacion + 2,keytext,textContent);
			if (hijo)
				freeNodeMemory(hijo);
		}
		for(int i=0; i<tabulacion ; i++)
			salida << "  ";
		salida << endl;
	}
}
示例#10
0
void GNC::GUI::AnonymizePanel::OnPropertyDobleClick(wxPropertyGridEvent& event)
{
        std::string clave(event.GetProperty()->GetHelpString().ToUTF8());
        bool isModified = (event.GetProperty()->GetFlags() & wxPG_PROP_MODIFIED);
        Anonymize(clave,!isModified);
}
示例#11
0
void GNC::GUI::AnonymizePanel::OnCheckPhysician( wxCommandEvent& /*event*/ )
{
        //referring physician name
        std::string clave("0008|0090");
        Anonymize(clave,m_pReferringPhysician->IsChecked());
}
示例#12
0
void GNC::GUI::AnonymizePanel::OnCheckInstituciones( wxCommandEvent& /*event*/ )
{
        //se anonimiza (0008,0080) Institution Name
        std::string clave("0008|0080");
        Anonymize(clave,m_pCheckInstituciones->IsChecked());
}
示例#13
0
void GNC::GUI::AnonymizePanel::OnCheckIdPaciente( wxCommandEvent& /*event*/ )
{
        //se anonimiza 0010|0020" (id del paciente)
        std::string clave("0010|0020");
        Anonymize(clave,m_pCheckIdPaciente->IsChecked());
}
示例#14
0
void GNC::GUI::AnonymizePanel::OnCheckNombreApellidos( wxCommandEvent& /*event*/ )
{
        //se anonimiza 0010|0010 (nombre del paciente)
        std::string clave("0010|0010");
        Anonymize(clave,m_pCheckNombrePaciente->IsChecked());
}