Revision 7b27f0dc src/com/rackspace/cloud/android/ContainerObjectDetails.java

b/src/com/rackspace/cloud/android/ContainerObjectDetails.java
82 82
	private DownloadObjectListenerTask downloadObjTask;
83 83
	private List<ObjectVersion> versions = new ArrayList<ObjectVersion>();
84 84
	private boolean isReadOnly = false;
85
	private final List<String> metadataRemoved = new ArrayList<String>();
86
	private final Map<String,String> metadataAdded = new HashMap<String, String>();
87
	
85 88
	/** Called when the activity is first created. */
86 89
	@Override
87 90
	public void onCreate(Bundle savedInstanceState) {
......
94 97
				.get("containerNames");
95 98
		cdnURL = (String) this.getIntent().getExtras().get("cdnUrl");
96 99
		cdnEnabled = (String) this.getIntent().getExtras().get("isCdnEnabled");
97

  
100
		
98 101
		setContentView(R.layout.viewobject);
99 102
		TabHost tabs = (TabHost) findViewById(R.id.tabhost2);
100 103

  
......
197 200
	}
198 201

  
199 202
	private void loadObjectData() {
203
		setTitle("Details: " +objects.getCName());
204
		metadataRemoved.clear();
205
		metadataAdded.clear();
200 206
		if(Container.MYSHARED.equals(objects.getContainerName())||Container.MYSHARED.equals(containerNames)){
201 207
			isReadOnly = true;
202 208
			
......
306 312
	private void addMetatadata(String key, String value){
307 313
		if(objects.getMetadata()==null)
308 314
			objects.setMetadata(new HashMap<String, String>());
315
		metadataAdded.put(key,value);
309 316
		objects.getMetadata().put(key, value);
310 317
		rebuildMetadataList();
311 318
	}
......
324 331
			@Override
325 332
			public void onClick(View v1) {
326 333
				properties.removeView(v);
334
				metadataRemoved.add(metadata.getKey());
327 335
				objects.getMetadata().remove(metadata.getKey());
336
				
328 337

  
329 338
			}
330 339
		});
......
371 380
			((CheckBox) v.findViewById(R.id.read)).setEnabled(false);
372 381
			((CheckBox) v.findViewById(R.id.write)).setEnabled(false);
373 382
		}
374
		((TextView) v.findViewById(R.id.ownerName)).setText(perm.getUser());
383
		
384
		((TextView) v.findViewById(R.id.ownerName)).setText(perm.getUser()==null?perm.getGroup()+":":perm.getUser());
375 385
		((CheckBox) v.findViewById(R.id.read)).setChecked(perm.isRead());
376 386
		((CheckBox) v.findViewById(R.id.write)).setChecked(perm.isWrite());
377 387

  
......
597 607
		super.onCreateOptionsMenu(menu);
598 608
		MenuInflater inflater = getMenuInflater();
599 609
		inflater.inflate(R.menu.container_object_list_menu, menu);
600
		menu.findItem(R.id.delete_object).setVisible(isReadOnly);
601
		menu.findItem(R.id.save).setVisible(isReadOnly);
610
		menu.findItem(R.id.delete_object).setVisible(!isReadOnly);
611
		menu.findItem(R.id.save).setVisible(!isReadOnly);
602 612
		return true;
603 613
	}
604 614

  
......
982 992
	
983 993
	public void saveObject(){
984 994
		Map<String,String> headers = new HashMap<String,String>();
985
		for(Entry<String,String> entry : objects.getMetadata().entrySet()){
986
			headers.put("X-Object-Meta-"+entry.getKey(), entry.getValue());
995
		if(objects.getMetadata()!=null)
996
			for(Entry<String,String> entry : objects.getMetadata().entrySet()){
997
				headers.put("X-Object-Meta-"+entry.getKey(), entry.getValue());
998
			}
999
		for(String s : metadataRemoved){
1000
			headers.put("X-Object-Meta-"+s, "~");
1001
		}
1002
		String read ="";
1003
		String write="";
1004
		for(Permission p : objects.getPermissions()){
1005
			if(p.isWrite()){
1006
				if(!write.equals("")){
1007
					write = write+",";
1008
				}
1009
				write = write + (p.getGroup()==null?p.getUser():p.getGroup());
1010
			}
1011
			else if(p.isRead()){
1012
				if(!read.equals("")){
1013
					read = read+",";
1014
				}
1015
				read = read + (p.getGroup()==null?p.getUser():p.getGroup());
1016
			}
1017
			
1018
			
987 1019
		}
1020
		Log.d(LOG,"read:"+read);
1021
		Log.d(LOG,"write:"+write);
1022
		read = "read="+read;
1023
		write = "write="+write;
1024
		headers.put("X-Object-Sharing", read+";"+write);
988 1025
		try {
989 1026
			HttpBundle b = new ContainerObjectManager(getApplicationContext()).updateObject(objects.getContainerName(), objects.getCName(), "", null, headers);
990 1027
			Log.i(LOG,"response:"+b.getResponse().getStatusLine().getStatusCode());

Also available in: Unified diff